在.aspx页面上引用代码隐藏属性?

时间:2011-05-15 16:59:29

标签: .net asp.net vb.net code-behind

在.aspx页面上,将服务器控件的属性链接到页面类的属性(其代码隐藏)的最佳方法是什么?我读过的唯一方法是使用数据绑定:

<asp:TextBox ID="txt" runat="server" Text='<%# Me.SomePropOfMine %>' />

然后从代码隐藏中调用Me.txt.DataBind()Me.Databind()。有没有办法单独在.aspx页面上建立这种关系,或者如果你有许多控件要绑定(不绑定整个页面),简化过程?

3 个答案:

答案 0 :(得分:5)

您可以Databind()整个Me或容器控件(您也可以在所需控件周围添加PlaceHolder控件)。因为DataBind()在Child控件上递归递送。

如果您不需要DataBinding,则更好的方法是使用Code Expression Binder

http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx

这允许您使用<%$ Code: Me.Property %>代替<%# Me.Property %>

有关表达式构建器的更多信息,如果您根本不了解它们,请查看此简介: http://www.4guysfromrolla.com/articles/022509-1.aspx

请注意,<%= Me.Property %>不适用于<asp:TextBox ...等网页控件......

<强> P.S。

Code表达式构建器的唯一缺点是您没有智能感知。我通常通过在标记内写<%= Me.TestSomething %>来获取我的智能感知来解决这个问题,然后在完成后用<%=替换<%$ Code:。烦人,但如果你不想去DataBind()路线(你不应该导致它可能与你想要做的现有真实数据绑定冲突。相信我,试图让这些工作是地狱),然后这是要走的路。

答案 1 :(得分:3)

有两件事:

  1. 如果要读取某些变量的值,请使用&lt;%=而不是&lt;%#。
  2. 您可以使用Page.DataBind()绑定页面中的所有控件。

答案 2 :(得分:0)

如果我真的需要这样做,我会使用CodeExpressionBuilder

但问题是 - 为什么要在标记中设置属性而不是在代码后面?如果它们是动态的并且与逻辑相关(并且可能是它们),那么即使看起来不方便,你也应该在代码中设置它们 - 这会将逻辑保留在一个地方并将标记保存在其他地方。