我需要使用其他地方的属性初始化文本框元素的文本属性,而实际上我可以简单地从代码中执行此操作,但如果可以这样做会更方便:
<asp:TextBox runat="server" Text="<%= new ContextItem("title").Value %>" />
不幸的是,以上无法完成..
问题是这个文本框元素在页面中多次 self 重复,我的问题是:
有什么建议可以让它更干净,然后在后面的代码中一遍又一遍地编写它吗?
感谢,
阿德勒
最佳答案
好的,所以这里的基本问题是,如果您使用内联表达式,则不能使用它来设置绑定(bind)上下文之外的服务器端控件的属性(使用绑定(bind)表达式)。我推断这可能是因为这些内联表达式的评估时间。但是,您可以通过这种方式呈现客户端标记。如果您想将功能纯粹保留在您的 aspx 文件中,这就是实现它的方法。
编辑:根据 Justin Keyes 的输入,似乎可以使用绑定(bind)表达式来设置属性。您需要手动调用 Page.DataBind()
触发文本框来计算表达式(见下面的答案)。
比如这个:
<asp:Label ID="lbl" runat="server" Text="<%= Now.ToShortDateString() %>" />
将产生这个输出:
<%= Now.ToShortDateString() %>
另一方面:
<%= "<span>" & Now.ToShortDateString() & "</span>"%>
将产生这个输出:
7/27/2011
解决这个问题的“正常”方法就是设置 Label.Text
Page.Load
中的属性事件处理程序或其他适当的事件处理程序,具体取决于您的需要,如下所示。这是我相信大多数人更愿意这样做的方式,在我看来也是最容易理解的。
标记:
<asp:Label ID="lbl" runat="server" />
代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lbl.Text = Now.ToShortDateString()
End Sub
关于c# - ASP.NET TextBox - 是否可以使用行内代码 <% %> 初始化文本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836534/