2012-02-29 2 views
3

У меня есть страницы ASP.NET (форма = Runat сервер)textBox потеряет значения при обратной передаче?

2 Textboxes:

<input type="text" id="tb1" /> 
<asp:TextBox ID="tb2" runat="server" /> 

и кнопку отправить.

Однако, когда я помещаю в них некоторые значения - и нажимаю кнопку - только tb2 возвращает свое значение с сервера.

Я думал, что значения полей ввода идут от клиента к серверу и обратно всегда!

В каком случае (в жизненном цикле страницы) ли tb1 теряет свою ценность?

+0

Как (где) вы посмотрите на ценности ТВ1? –

+0

@HenkHolterman Я хочу увидеть его на экране –

ответ

2

Сообщение будет содержать информацию, введенную в ТВ1 - так что он может быть прочитан из запроса

если вы измените его на

<input type="text" id="tb1" runat="server" /> 

он будет работать, как вы хотите.

без сервера runat = он не «теряет» его значение - он никогда не будет заполнен - ​​поскольку это просто данные в POST и не связаны с контролем на стороне сервера.

одна конечная точка - явно ответить на некоторые из ваших комментариев - данные POST обрабатывается непосредственно перед событием преднагрузки - это может быть найдена из http://msdn.microsoft.com/en-us/library/ms178472.aspx

+0

Я знаю, что могу прочитать его request.form, но на каком этапе жизненного цикла asp.net он возвращает значение tb2 (а не tb1)? –

+2

@royi - остановка сравнения tb1 и tb2. Они совершенно разные. –

+0

другие сообщения верны - он не будет повторно введен, так как это не является контролем на стороне сервера (если, конечно, вы не входите в runat = server) – dice

4

<input type="text" id="tb1" /> - это буквальный HTML.
Нет кода на стороне сервера, который возвращает значение.

Эта функция является частью элементов управления на стороне сервера.

+0

в каком событии (в жизненном цикле страницы) Ли tb1 теряет свою ценность? –

+0

@RoyiNamir Этот вопрос не имеет смысла. 'tb1' не является элементом управления на стороне сервера, он вообще не участвует в жизненном цикле на стороне сервера. – asawyer

+0

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

1

tb1 не является контролем на стороне сервера, это нормальный объект html dom.

Вы должны найти его значение после сообщения в коллекции значений Request.Form.

+0

Я знаю, что могу прочитать его request.form, но на каком этапе жизненного цикла asp.net он возвращает значение tb2 (а не tb1) –

+0

@RoyiNamir См. Мой другой ответ. – asawyer