我需要用一些其他地方的属性来初始化文本框元素的text属性,而实际上我可以从代码中执行此操作,但如果可以这样做会更方便:
<asp:TextBox runat="server" Text="<%= new ContextItem("title").Value %>" />
Run Code Online (Sandbox Code Playgroud)
不幸的是上面
的问题无法解决.问题是这个文本框元素在页面中重复了几次,我的问题是:
是否有任何建议如何使其更清洁,然后在代码背后一次又一次地写它?
谢谢,阿德勒
好的,这里的基本问题是,如果您使用内联表达式,则不能使用它在绑定上下文之外设置服务器端控件的属性(使用绑定表达式)。我推断这可能是因为这些内联表达式的评估时间。但是,您可以通过这种方式呈现客户端标记。如果您想将功能纯粹保留在 aspx 文件中,则可以这样做。
编辑:根据 Justin Keyes 的输入,似乎可以使用绑定表达式来设置属性。您需要手动调用Page.DataBind()
以触发文本框来计算表达式(请参阅下面的答案)。
例如这个:
<asp:Label ID="lbl" runat="server" Text="<%= Now.ToShortDateString() %>" />
Run Code Online (Sandbox Code Playgroud)
将产生以下输出:
<%= Now.ToShortDateString() %>
另一方面:
<%= "<span>" & Now.ToShortDateString() & "</span>"%>
将产生以下输出:
2011年7月27日
解决此问题的“正常”方法只是根据您的需要Label.Text
在事件处理程序或另一个适当的事件处理程序中设置属性,如下所示。Page.Load
我相信这是大多数人更喜欢的方式,而且在我看来也是最容易理解的。
标记:
<asp:Label ID="lbl" runat="server" />
Run Code Online (Sandbox Code Playgroud)
代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lbl.Text = Now.ToShortDateString()
End Sub
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9805 次 |
最近记录: |