Вопрос

Я полагаю, что это не огромное дело, поскольку в этом вопросе есть и в другой форме, но мне действительно любопытно, что и ответ, так как я думал, что это можно сделать.

У меня есть публичное свойство, которая возвращает логию в моем коде. Я хотел бы получить доступ к этой переменную сервера в моем функции проверки 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() %>)...
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top