Двусторонняя привязка свойства строки к TextBox в ASP.NET WebForms

1

Я пытаюсь реализовать простейшую возможную (так мне показалось) привязку привязки TextBox к свойству страницы, за исключением того, что привязка данных должна быть двухсторонней, поэтому вместо <%# Test %> я использую <%# Bind("Test") %>. (На самом деле, цель состоит в том, чтобы иметь единственный объект как свойство и привязываться к его свойствам, но начинать с чего-то простого.) Я тестирую его на этом простом коде:

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() и Bind(), могут использоваться только в контексте управления базой данных.

Что не так с этим подходом?

Теги:
data-binding
webforms

2 ответа

1
Лучший ответ

К сожалению, Eval и Bind могут использоваться только в сочетании с контролем данных, такими как сетка. Это происходит потому, что они ожидают выполнения в контейнере именования, который имеет текущий элемент данных, например выбранную строку в сетке.

Таким образом, вы можете использовать этот синтаксис для привязки к текстовому полю, расположенному внутри шаблона строки сетки или тому подобное, но не к текстовому полю самостоятельно.

0

Вы должны использовать любой из

  1. Библиотека Microsoft.Ajax, которая поддерживает двустороннюю привязку данных.
    1. Knockout Js (стиль Mv *, поддерживает двустороннюю привязку)
    2. Угловой Js (стиль MV *, поддерживает двустороннюю привязку)

используя вышеописанную структуру, вы можете получить json-объект и привязать его непосредственно к любому элементу или атрибуту html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню