Это предполагаемое поведение текстового поля и метки? - PullRequest
1 голос
/ 02 сентября 2011

Я устанавливаю значение элементов управления при загрузке DOM.У меня есть этот супер простой код на странице aspx:

 <script type="text/javascript">
        $(document).ready(function () {
            $('#<%=textBox2.ClientID %>').val($('#<%=textBox1.ClientID %>').val());
            $('#<%=lblVal.ClientID %>').html($('#<%=textBox1.ClientID %>').val());

        });
    </script>

        <asp:TextBox runat="server" ID="textBox1" Text="Test data" />
        <asp:TextBox runat="server" ID="textBox2" />
        <asp:Label runat="server" ID="lblVal" Text="Old Data" />
        <asp:Button runat="server" Text="Click Me" onclick="Unnamed1_Click" />

В моем обработчике событий нажатия кнопки у меня есть этот код:

protected void Unnamed1_Click(object sender, EventArgs e)
    {
        Debug.Write(textBox2.Text);
        Debug.Write(lblVal.Text);
    }

То, что шокировало меня, lblVal имеет старыйзначение.Установка значения в javascript на самом деле не влияет на метку, тогда как данные textbox2 отражаются на сервере.Является ли предполагаемое поведение текстового поля и метки?Это стало для меня неожиданностью, потому что я никогда раньше не сталкивался с этим.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Метка будет отображаться в теге HTML label, а не в поле формы. Поэтому у него нет значения, которое публикуется при отправке формы, и значение, которое вы восстанавливаете в обратной передаче, происходит из ViewState. Поля формы (например, ASP TextBox, который становится input) опубликуют свое значение, и это переопределит значение в viewstate.

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

0 голосов
/ 02 сентября 2011

Элемент управления asp: Label отображается в диапазон, поэтому не является элементом формы, и его измененное содержимое не будет опубликовано на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...