У меня есть маркировка на странице, и я обновляю текстовое свойство маркировки (с расчетным значением), когда текст изменяется в текстовом поле.
Я обновляю маркировку как так:
$myLabel.text("123");
Текст отображается правильно на экране butwhen, я пытаюсь сохранить текстовое значение к объекту в коде позади (Когда я нажимаю кнопку), текстовое свойство маркировки "" а не "123".
Код позади:
var myLabel = myLabel.Text;
//the var myLabel is "" when it should be "123"
Какие-либо идеи относительно того, почему это было бы?
Заранее спасибо,
Столкновения
Почему бы вам не проверить значение, введенное в текстовое поле. судя по вашему описанию, он должен быть таким же, и он будет доступен. В противном случае, я думаю, вам нужно опубликовать еще код, чтобы прояснить, что вы делаете.
Значение текста метки необходимо сохранить во ViewState, иначе оно будет перезаписано при обратной передаче, инициированной нажатием кнопки.
Один из вариантов - также изменить значение скрытого элемента управления. Любые изменения этого значения будут доступны в коде при обратной передаче.
<asp:Hidden id="hiddenLabel" runat="server" />
В какую функцию вы помещаете var myLabel = myLabel.Text;
?
Это не будет работать в функции init - вам нужно указать страницу время для загрузки из состояния просмотра. Лучшее в обработчике событий нажатия кнопки.
Обновление:
Вам нужно использовать элемент управления вводом формы (например, TextBox), а не метку. Этикетки доступны только для чтения.
Элементы управления Html, такие как labels, spans, divs, не отправляют свои значения на сервер - в то время как inputs отправляют. ASP.NET сохраняет изменения в элементах управления с помощью ViewState.
Когда вы изменяете значение элемента управления на сервере, его состояние часто сохраняется там. Если вы изменяете значение на стороне клиента с помощью JavaScript, ViewState не изменяется, и поэтому при PostBack вы получаете исходное значение Empty.
Не уверен, что это правильный способ, но я обошел проблема с использованием скрытого поля.
Я обновил текст метки, как указано выше:
$myLabel.text("hello");
, но затем я обновил значение скрытого поля:
$('#<%= hiddenField.ClientID %>').val("hello");
Затем я смог использовать скрытое поле в коде позади:
var myLabel = hiddenField.Value.ToString();
Кажется, это работает нормально.