Это старый вопрос, но недавно я столкнулся с той же проблемой на моем Mac с 10.12.6. Переменная DISPLAY
не установлена в терминале и ssh -X
не работает. Это то, что я сделал, чтобы решить эту проблему:
Переустановите XQuartz с помощью Homebrew: brew cask install xquartz
(может потребоваться опция --forced
)
Добавьте модуль запуска XQuartz к системе по умолчанию (следуя решению, приведенному в этом сообщении Reddit :
launchctl load -w /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
Перезагрузите систему.
После этого моя переменная DISPLAY
установлена правильно:
$ echo $DISPLAY
/private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0
И пересылка X11 в ssh также работает.
Обновление страницы ( нажатие F5) отличается от обратной передачи. Я не верю, что значение в вашем текстовом поле будет отправлено обратно на сервер при обновлении. Однако значение в текстовом поле будет отправлено обратно на сервер при обратной передаче (пока атрибут ReadOnly TextBox не установлен в значение true, но это другая история).
Единственная проблема заключается в том, что когда я обновляю страницу, текст в CharacterNameTextBox и ClassNameLabel, которые были установлены на стороне клиента через javascript , потеряны.
Поскольку вы устанавливаете значение на стороне клиента, я бы предложил использовать файлы cookie для хранения этих данных и проверки этого файла cookie на стороне клиента, поскольку ViewState здесь не поможет, если вы просто установите значение client- сторону, независимо от того, что CodeBehind установил бы для нее.
Проблема могла быть в одном из двух. После обновления можно очистить поле. Кроме того, если вы отправляете ответ, устанавливаете ли вы значение текстового поля в событии загрузки (или выгрузки) страницы?
Сохранение значений в скрытых полях - это не более хитрость, чем сама .NET Web Forms. Большая часть данных приложения передается / хранится в скрытом поле __VIEWSTATE.
При этом не могли бы вы прояснить, что происходит? Вы устанавливаете значение при загрузке страницы или в ответ на какое-либо действие пользователя? Не могли бы вы предоставить часть своего кода, чтобы мы могли иметь более четкое представление о том, что вы делаете?
РЕДАКТИРОВАТЬ
Вы явно устанавливаете значение текстового поля или метки в коде загрузки / обратной передачи вашей страницы? Это переопределит любые значения, установленные клиентским скриптом. Я не могу придумать никакой другой причины, по которой ценности не сохранятся. Если ты'
когда вы устанавливаете значение? Вы можете установить значение загрузки страницы в javascript, если вы используете clientId текстового поля.
В событии preinit страницы попробуйте получить доступ к следующему значению:
Request ["CharacterNameTextBox"]
Я столкнулся с той же проблемой (значение, установленное с помощью javascript, никогда не отправьте обратно, но введенное значение будет), и коллега предложил это. Мертвый, работает как шарм.
Вы должны помнить, KISS.
Просто подумайте о ваших существующих полях как о презентационных по своей природе и добавьте скрытые поля ввода с атрибутом runat = "server" и установите их с помощью JavaScript в вашем то же событие на стороне клиента.
Это ваши настоящие ценности, которые вы хотите использовать в методах кода программной части, и вы сможете без проблем получить их. Поскольку объект текстового поля является абстракцией .NET, я бы предложил при выполнении клиентской работы с использованием входных данных HTML, которые выполняются на сервере. Кажется, это избавляет меня от головной боли, когда я по колено в веб-формах BS.
Я думаю, что здесь есть много решений, но я за то, чтобы сломать запястье и уйти, если могу.