С ASP.Net, как вы пишете в элемент управления на стороне клиента (текстовое поле) с кодом на стороне сервера? - PullRequest
1 голос
/ 06 января 2010

Если у меня есть стандартное текстовое поле HTML: я могу получить значение, используя Request.Form.

Но как мне заполнить это текстовое поле со стороны сервера? Я пытался

Request.Form["txtTest"] = "blah"; 

но получил ошибку только для чтения.

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Если вы хотите иметь первоклассную поддержку для доступа к элементу управления по его идентификатору на стороне сервера (согласно элементам управления .net), вам необходимо сделать так, чтобы он имел тег runat = "server".

В противном случае вы можете установить значение динамически, имея свойство в своем коде и извлекая его значение на странице aspx, используя привязку данных, например,

<input type=text value="<%=PropertyInCodeBehindClass %>" />

и

public string PropertyInCodeBehindClass
{
  get;
  set;
}
0 голосов
/ 06 января 2010

Помните, что в момент запуска кода вашего сервера текстовое поле на стороне клиента не существует . HTML-страница, на которой размещен элемент управления, уже была отправлена ​​на сервер как новый запрос , и веб-браузер ожидает, что вы ответите совершенно новой страницей. До получения этого ответа браузер будет отображать страницу, но это просто удобная оболочка. DOM, который содержал ваше текстовое поле, исчез, и вы еще не создали новое. Вы не можете напрямую изменить свой ответ, обновив свойство в запросе.

Это означает, что вам нужно использовать серверное представление элемента управления. Если это серверный элемент управления, вы можете попробовать txtTest.Text = "blah"; В противном случае вам нужно найти, где вы сгенерируете этот входной тег и соответствующим образом изменить его.

Всегда есть два; Не больше, не меньше. Запрос и ответ.

...