代码之家  ›  专栏  ›  技术社区  ›  greenoldman

如何在ASP.Net页面?

  •  13
  • greenoldman  · 技术社区  · 15 年前

    下面给出的例子可能没有什么意义,但这是因为我关注的是语法。

    假设我有这样的C代码:

    public static class Foo
    {
      public const string Bar = "hello world.";
    }
    

    <p><%= Foo.Bar %></p>
    

    它起作用了。它也适用于以下情况:

    <p>"<%= Foo.Bar %>"</p>
    
    <p class="<%= Foo.Bar %>">the weird, nonsense example</p>  
    

    所以,它也可以用引号。不过,我也有这样的情况,当报价获得更高的优先级时:

    <custom:Header runat='server' Text="<%= Foo.Bar %>"/>
    

    (header是一个自定义控件——它只是在默认情况下添加一些css和position)。在这种情况下,引号具有更高的优先级,整个文本都会被吸走,实际上我得到的标题是文本

    <%= 美食酒吧%>

    所以,我的问题是-- 无论什么(low——具有最高优先级)都可以通过什么语法来获得C#常量的值?

    编辑:

    <custom:Header runat='server' Text="<%# Foo.Bar %>"/>
    

    (注意散列而不是等号)也不起作用。

    6 回复  |  直到 5 年前
        1
  •  2
  •   elsni    15 年前

    尽量避免在后面的代码中使用c代码。 最好在aspx页中放置一个label控件,并用美食酒吧

    我的标签文本= 美食酒吧;

        2
  •  2
  •   Wallace Breza    15 年前

    只要页是数据绑定的,就可以在页中使用数据绑定表达式。您仍然可以使用您的示例:

    <custom:Header runat='server' Text="<%# Foo.Bar %>"/>
    

    但你也需要确保你打电话 DataBind() 在数据绑定控件之外的页中的所有表达式。

    protected void Page_Load(object sender, EventArgs e)
    {
        DataBind();
    }
    
        3
  •  1
  •   Jérôme Verstrynge    14 年前

    对于自定义控件,只要控件调用 DataBind() 内部(例如 WebControl.Render 等等)

        4
  •  0
  •   Danil    15 年前

    您需要在asp.net页码 <%导入命名空间=“命名空间.of.foo.class“%>

    抱歉,您不能在服务器控件中使用<%=语法。对于服务器控件,您需要在代码中指定它。 不管它是常量还是页面类的属性。

        5
  •  0
  •   eglasius    15 年前

    afaik<%=中的值在页面生命周期的呈现阶段使用

    控件在生命周期的早期需要这些值。在数据绑定期间将使用<%\。

    另一个选择是在页面加载时设置它。应该用它的常规方式asp.net. 或者,您可以更早地/在init期间设置它(如果您没有操作它,请这样做)。

        6
  •  0
  •   Claudio Redi    12 年前

    简单的引语就可以了

    Text='<%= Foo.Bar %>'
    

    Text='<%# Foo.Bar %>'