Переменные боковых серверов в JavaScript
-
15-09-2020 - |
Вопрос
Я полагаю, что это не огромное дело, поскольку в этом вопросе есть и в другой форме, но мне действительно любопытно, что и ответ, так как я думал, что это можно сделать.
У меня есть публичное свойство, которая возвращает логию в моем коде. Я хотел бы получить доступ к этой переменную сервера в моем функции проверки JavaScript, но до сих пор не совсем ее получаю.
Public Property editMode() As Boolean
Get
If Cache("editMode") IsNot Nothing Then
Return (DirectCast(Cache("editMode"), Boolean))
Else
Return False
End If
End Get
Set(ByVal value As Boolean)
Cache("editMode") = value
End Set
End Property
function validateEdit()
{
alert("editMode value is " + '<%#editMode()%>');
if ('<%#editMode()%>'.toString() == "True")
{
alert("You are currently in edit mode. Please save or cancel changes.");
return false;
}
return true;
}
.
Я попробовал кучу вариаций на это, но это всегда ложно. В текущем коде предупреждает возврат «Значение редактирования MODE является ложным»
Когда я использую:
if ('<%#editMode()%>') ...
.
Тогда он все еще всегда ложно, но он входит в состояние, поэтому поведение, как будто это всегда было правдой.
Еще одна вещь, которую нужно упомянуть, это то, что большинство материальных тегов JavaScript / Server, который я нахожу, говорит использовать <%= editmode%> , но я не могу сделать это, потому что каждый раз, когда я использую= вместо # я получаю исключение:
"Коллекция элементов управления не может быть модифицирован, потому что контроль содержит Кодовые блоки (то есть <% ...%>). "
Итак, я решил это с помощью # и говорите
Page.Header.DataBind()
Page.Form.DataBind()
.
в обработчике события нагрузки страницы.
Есть идеи? Заранее спасибо. :)
(Кроме того, я обычно использую C #, поэтому я мог бы неосознанно сделать что-то глупость в части VB, поэтому не стесняйтесь указывать на это тоже)
Решение 2
Это помогло мне исправить ошибку. «Коллекция элементов управления не может быть изменена, потому чтоУпражнение содержит кодовые блоки «
Перемещение функции JavaScript из головы и в корпус исправляет проблему.Похоже, несколько вещей, которые могут привести к этой проблеме, но в моем случае наиболее вероятным виновником является ajaxtoolkit.
Другие советы
Во-первых, попробуйте изменить на это:
<%=editMode()%>
.
Не уверен, если это так, но это не повредит.Во-вторых, вы находитесь в режиме редактирования, когда вы сначала загружаете страницу?Этот код собирается запустить сторону сервера и вернуть результат к пользователю.
на странице пользователя, они увидят:
function validateEdit()
{
alert("editMode value is " + 'False');
if ('False'.toString() == "True")
{
alert("You are currently in edit mode. Please save or cancel changes.");
return false;
}
return true;
}
.
Опять же, не уверены, если это так, но важно понимать, что JavaScript не делает никаких вызовов на сервер.
Еще одна вещь.
Вы понимаете, что вы преобразуете строку в другую строку с помощью
'<%#editMode()%>'.toString()
.
верно?
Я думаю, что вы хотите, это это
if ('<% =editMode.toString() %>'= 'True')...
.
или лучше, но
if (<% =editMode.toString().ToLower() %>)...
.