c# - ASP.NET TextBox - 是否可以使用行内代码 <% %> 初始化文本属性

标签 c# asp.net vb.net


我需要使用其他地方的属性初始化文本框元素的文本属性,而实际上我可以简单地从代码中执行此操作,但如果可以这样做会更方便:

<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/

相关文章:

c# - 从其他接口(interface)继承的接口(interface)的显式 C# 接口(interface)实现

asp.net - 在 Web.config 中配置 ASP.NET 路由

python - Visual Basic 开发人员想要编写 Linux 应用程序

.net - 检测 RichTextBox 中的图像

asp.net - BC30057 : To many arguments

c# - System.Version 未序列化

c# - LINQ 排序 - 前三个需要是不同的制造商

c# - 使用参数的 Sqlite WHERE 子句

c# - 如何转换我的分页功能以使用 AJAX Insead?

c# - 创建 asp.net web 表单时如何操作默认标题?