2014-11-04 2 views
0

У меня есть одно текстовое поле ASP.net на моей странице. Я устанавливаю свойство text этого текстового поля с помощью JavaScript. Теперь я хочу получить доступ к этому текстовому значению из исходного кода (используя C#). Однако, когда я пытаюсь получить к нему доступ, я получаю старое значение (настроенное во время загрузки страницы), и я не могу получить значение, заданное кодом JavaScript. Я что-то упустил?Как читать текст текстового поля, установленный JavaScript из кода позади?

ASPX разметка текстового поля -

<asp:TextBox ID="txtMessage" runat="server"></asp:TextBox> 

JavaScript для редактирования это текстовое поля -

var txtMessage = document.getElementById("txtMessage"); 
txtMessage.Value = "New Value"; 

C# код для доступа текста текстового поля -

string strMessage = txtMessage.Text; // This does not return value set by above JS function 
+0

'.Value' должно быть' .value'. '.Text' должен быть' .text', для начала. – Andy

+0

@ Andy '.Text' правильный; эта часть является серверным кодом C#. –

+0

Я внес эти изменения. Еще не повезло. Значение отображается в браузере. Однако, в конце концов, я не могу получить значение с использованием свойства text. Кроме того, .Text является правильным, как упоминалось Трой Gizzi. – AshutoshPujari

ответ

1

Вы просто должны изменить эту строку в JavaScript:

txtMessage.value = "New Value"; // the "v" in ".value" needs to be lowercase 

UPDATE: Я создал страницу ASP.NET, чтобы убедиться, что код на OP в действительно фактически работают с этим изменением, просто чтобы убедиться, что я не хватал какую-либо другой маленькой опечатки. Однако, как отметил Игорь в своем комментарии, хорошей практикой является использование свойства управления ClientID для учета любых префиксов, которые среда выполнения .NET может добавить к идентификатору элемента HTML.

Таким образом, две линии в вашем JavaScript должен быть изменен на это (также подтвердил правильность работы):

var txtMessage = document.getElementById("<%= txtMessage.ClientID %>"); 
txtMessage.value = "New Value"; 
0

Когда ASP.Net доставляет страницу, которая будет оказывать, название управления изменяются добавив суффикс, который идентифицирует контейнер, который их удерживает. Из JavaScript вы должны убедиться, что вы получили правильный идентификатор элементов управления ASP, обратившись к свойству .ClientID.

//gets the element by its ID according to ASP rules 
var txtMessage = document.getElementById("<%=txtMessage.ClientID%>"); 

//the "value" property is lowercase 
txtMessage.value = "New Value"; 
Смежные вопросы