Как скрыть div (на клиенте), если проверка на стороне клиента не удалась? - PullRequest
3 голосов
/ 19 января 2010

Я делаю страницу asp.net с элементами управления проверкой asp.net. Если проверка не пройдена, я хочу показать div (на клиенте). Где мне это сделать? Я не могу найти способ доступа к событию OnValidate на клиенте. Я могу сделать это на сервере, но лучше сделать это на клиенте.

Ответы [ 3 ]

0 голосов
/ 19 января 2010

Использовать пользовательский валидатор ASP.NET .

Если по какой-либо причине вы не можете / не хотите этого делать, используйте метод ClientScriptManager.RegisterOnSubmitStatement и убедитесь, что вы возвращаете false в клиентском скрипте, если вы проверяете терпит неудачу.

0 голосов
/ 19 января 2010

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

Учитывая простой div, такой как следующее:

<div id="divErrors" runat="server" style="display: none;">
    This should only appear when validation fails.
</div>

Добавьтеследующий JavaScript на вашей странице:

<script language="javascript" type="text/javascript">
    function showErrors() {
        if (!Page_IsValid) {
            document.getElementById('divErrors').style.display = 'block';
        } else {
            document.getElementById('divErrors').style.display = 'none';
        }
    }
</script>

Наконец, зарегистрируйте скрипт отправки, который вызывает эту новую функцию showErrors (в событии Page_Load):

If Not Page.IsPostBack() Then
    Dim scriptName As String = "OnSubmitScript"
    Dim scriptType As Type = Me.GetType()
    Dim script As ClientScriptManager = Page.ClientScript
    If Not script.IsOnSubmitStatementRegistered(scriptType, scriptName) Then
        script.RegisterOnSubmitStatement(scriptType, _ 
                        scriptName, "showErrors();")
    End If
End If
0 голосов
/ 19 января 2010

Вы можете вызвать функцию javascript из кода на стороне сервера, используя метод Page.RegisterClientScriptBlock] 1

как

String scriptString = "<script type='text/javascript'>MakeDivVisible();</script>";
this.RegisterClientScriptBlock("clientScript", scriptString);

и затем в функции javascript вы можете изменить отображение div, чтобы оно было похожим на

document.getElementById("divId").style.display = 'block';

или если вы укажете атрибут div runat = "server", то вы можете получить доступ к div из кода на стороне сервера и изменить его отображение на блок

divId.Style["display"] = "block";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...