2009-07-07 86 views
0

我有一个字符串属性注释的Customer类,我想将它绑定这样的:如何将一个类属性绑定到一个TextBox?

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text=<%=customer.Comments %>> 
</asp:TextBox> 

但是,它给我的错误:

服务器标记不能包含<%... %>结构。

我也有称为GetCreatedDate类的方法和在aspx页,我做 <%= GetCreatedDate()%>和<%GetCreatedDate();%>。有什么不同?

回答

1

或者你可以在代码的Page_Load事件隐藏文件设置的值。评论%>。此语法仅在TextBox为数据绑定时才被评估。您通常会在DataBound列表中使用它。在这种情况下,您需要手动数据绑定控件。重写页面的OnDataBinding方法并调用txtComments.DataBind();

数据绑定语法是从aspx页面声明式设置ServerControl属性的唯一方法。其他语法的Response.Write发生在ServerControl属性无法访问的时候。如果控件不在数据绑定控件中,则必须将其绑定。

如果你正在寻找去在你的页面的所有声明,你不使用这种方法,因为你仍然需要在代码编写代码获取落后得多。

另一种方法是,如果您希望自己使用文本框而不使用父级DataBound控件,则可以为TextBox创建子类,添加AutoBind属性,并在子类控件中调用其DataBind方法(如果它为true)。这可以让你绑定值而不用在后面的代码中写入数据绑定代码。

您也可以将TextBox和其他表单控件添加到FormView控件并将其绑定到您的对象。在这种情况下,您仍然可以使用DataBinding语法。

0

你应该使用 “<%#%>” 用于数据绑定

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text="<%# customer.Comments %>"> 
</asp:TextBox> 
+0

只是好奇,是什么#之间的差异= – Xaisoft 2009-07-07 20:02:40

+1

“<%#”评估数据绑定时DataBind方法被称为 “<%=”的计算结果页面时并且不支持服务器控件属性 – 2009-07-07 20:53:57

0

试试这个。

txtComments.Text = customer.Comments; 
0

使用如规定的数据绑定语法,<%#客户:

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text=<%# customer.Comments %>> 
</asp:TextBox> 

通知的=到#

0

试试这个

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text='<%# customer.Comments %>'> 
</asp:TextBox> 
相关问题