2014-08-27 56 views
1

我想实现一个最简单的(所以在我看来)一个TextBox的数据绑定到页面的一个属性,除了数据绑定应该是双向的,所以而不是<%# Test %>,我用<%# Bind("Test") %>双向串属性的TextBox在ASP.NET Web窗体的结合

TestForm.aspx

:(其实,我们的目标是有一个单一的对象作为一个属性,绑定到其属性,但让我们从简单的东西开始),我对这个简单的代码测试它
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="TestTextBox" runat="server" Text='<%# Bind("Test") %>' /> 
    </div> 
    </form> 
</body> 
</html> 

TestForm.aspx.cs:

using System; 

namespace WebApplication1 
{ 
    public partial class TestForm : System.Web.UI.Page 
    { 
     public string Test { get; set; } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       Test = "Hello"; 
      } 
     } 

     protected override void OnPreRender(EventArgs e) 
     { 
      base.OnPreRender(e); 
      DataBind(); 
     } 
    } 
} 

的DataBind()的结果中的呼叫的InvalidOperationException数据绑定方法如eval()函数,XPath的(),和Bi nd()只能用于数据绑定控件的上下文中。

有什么不对的这种做法?

回答

1

不幸的是,EvalBind只能与数据绑定控件(如网格)结合使用。这是因为他们希望在具有当前数据项的命名容器内执行,例如网格中的选定行。

所以,你可以使用语法来绑定到一个文本框,这是located within a grid row template or suchlike,但不是一个文本框出自身。

0

你应该使用任何具有双向数据绑定支持

  1. Microsoft.Ajax库之一。
  2. 敲除的js(MV *风格,支持两种方式的结合)
  3. 角JS(MV *风格,支持两种方式的结合)使用上述框架

你可以检索json对象并将其直接绑定到任何html元素或属性。