ASP.NET Mvc 2 Как запустить проверку на стороне клиента изнутри javascript? - PullRequest
9 голосов
/ 18 мая 2010

Существует ли функция для ASP.NET MVC 2, встроенная в проверку javascript аннотации данных, которая выполняет функции isValid () Jquery.Validate?

Я бы хотел проверить правильность моих полей перед использованием jquery ajax для отправки данных на сервер? Есть предложения?

Спасибо.

Ответы [ 8 ]

2 голосов
/ 31 августа 2010

я использовал:
http://geekswithblogs.net/stun/archive/2010/02/27/asp.net-mvc-client-side-validation-summary-with-jquery-validation-plugin.aspx
и это прекрасно сработало для меня, особенно вам не нужно менять исходный способ Mvc Validation (я имею в виду поле проверки), вы просто делаете его на стороне клиента

1 голос
/ 31 августа 2010

Как подразумевают basilmir и Dom Ribaut, вы должны получить это автоматически, если вы включили EnableClientValidation (). Однако, если вы хотите вручную вызвать проверку MVC на стороне клиента, вы можете использовать:

if (!Sys.Mvc.FormContext.getValidationForForm($("#myform").get(0)).validate('submit').length) {
  // is valid
}

Вы можете заменить $("#myform").get(0) элементом DOM для вашей формы.

0 голосов
/ 02 июля 2010

Вот простая программа, которая поможет вам выполнить проверку формы на стороне клиента в JavaScript.

Name : <asp:TextBox ID="txtName" />
Email : <asp:TextBox ID="txtEmail" />
Web URL : <asp:TextBox ID="txtWebUrl" />
Zip : <asp:TextBox ID="txtZip" />
<asp:Button ID="btnSubmit" OnClientClick=" return validate()" runat="server" Text="Submit" />

Now on the source code of this form in script tag write the following code:

<script language="javascript" type="text/javascript">
function validate()
{
      if (document.getElementById("<%=txtName.ClientID%>").value=="")
      {
                 alert("Name Feild can not be blank");
                 document.getElementById("<%=txtName.ClientID%>").focus();
                 return false;
      }
      if(document.getElementById("<%=txtEmail.ClientID %>").value=="")
      {
                 alert("Email id can not be blank");
                document.getElementById("<%=txtEmail.ClientID %>").focus();
                return false;
      }
     var emailPat = /^(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)$/;
     var emailid=document.getElementById("<%=txtEmail.ClientID %>").value;
     var matchArray = emailid.match(emailPat);
     if (matchArray == null)
    {
               alert("Your email address seems incorrect. Please try again.");
               document.getElementById("<%=txtEmail.ClientID %>").focus();
               return false;
    }
    if(document.getElementById("<%=txtWebURL.ClientID %>").value=="")
    {
               alert("Web URL can not be blank");
               document.getElementById("<%=txtWebURL.ClientID %>").value="http://"
               document.getElementById("<%=txtWebURL.ClientID %>").focus();
               return false;
    }
    var Url="^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"
    var tempURL=document.getElementById("<%=txtWebURL.ClientID%>").value;
    var matchURL=tempURL.match(Url);
     if(matchURL==null)
     {
               alert("Web URL does not look valid");
               document.getElementById("<%=txtWebURL.ClientID %>").focus();
               return false;
     }
     if (document.getElementById("<%=txtZIP.ClientID%>").value=="")
     {
               alert("Zip Code is not valid");
               document.getElementById("<%=txtZIP.ClientID%>").focus();
               return false;
     }
     var digits="0123456789";
     var temp;
     for (var i=0;i<document.getElementById("<%=txtZIP.ClientID %>").value.length;i++)
     {
               temp=document.getElementById("<%=txtZIP.ClientID%>").value.substring(i,i+1);
               if (digits.indexOf(temp)==-1)
               {
                        alert("Please enter correct zip code");
                        document.getElementById("<%=txtZIP.ClientID%>").focus();
                        return false;
               }
     }
     return true;
}
</script>

And in code behind file just write the below code.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
               btnSubmit.Attributes.Add("onclick", "return validate()")
End Sub

Теперь вы получите форму с соответствующей проверкой.

Я надеюсь, что это поможет вам

0 голосов
/ 27 июня 2010

Вы можете включить проверку на стороне клиента с помощью <% Html.EnableClientValidation (); %> Он автоматически сгенерирует весь Javascript-код, необходимый для проверки на стороне сервера, чтобы работать на стороне клиента. Не забудьте по-прежнему проверять на стороне сервера , так как клиент может обходить JavaScript и отправлять неверные данные. Не используйте только проверку на стороне клиента.

<% Html.EnableClientValidation(); %>
<%= Html.ValidationSummary() %>
<% using (Html.BeginForm()) {%>

    <%=Html.EditorForModel() %>     
        <p>
            <input type="submit" value="Save" />
        </p>
<% } %>
0 голосов
/ 22 июня 2010

Jquery будет вашим лучшим другом

отметьте это http://bassistance.de/jquery-plugins/jquery-plugin-validation/

ссылка на документ: http://docs.jquery.com/Plugins/Validation

0 голосов
/ 15 июня 2010

Посмотрите на xval .Он позволяет вам определять свои правила проверки, используя атрибуты аннотации данных или атрибуты проверки замка (я думаю, что проверка nhibernate также была добавлена ​​недавно).Затем проверка преобразуется в правила проверки клиента, и вы можете проверить форму с помощью ajax, чтобы не выполнять обратную передачу на сервер.

На странице проекта: xVal - это структура проверки для приложений ASP.NET MVC.Это позволяет легко связать выбранный вами механизм проверки на стороне сервера с выбором библиотеки проверки на стороне клиента, аккуратно вписываясь в архитектуру и соглашения ASP.NET MVC.

Если вы используете только механизмы проверкидля asp.net mvc взгляните на это и это

0 голосов
/ 05 июня 2010

Скотт Гух шаг за шагом описывает простую проверку js в этом посте: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx (ищите шаг 3).
Это не JQuery, но не соответствует ли это вашим потребностям?

-
Дом

0 голосов
/ 19 мая 2010

Кажется, что в MicrosoftMvcJQueryValidation.js нет ничего особенного, кроме регистрации правил для плагина jquery.validate.js.

Это сработало для меня:

<script type="text/javascript">

    function validateForm(formId)
    {
       var valid = $("#" + formId).validate().form();
       return valid;
    }

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...