2010-05-23 4 views
1

Я пытаюсь использовать проверку клиента asp.net mvc 2 (<% Html.EnableClientValidation();%>) с модальным полем (facebox). и не может заставить его работать. Я попытался следующие решения, и ни один из них не работал:Проверка клиента asp.net MicrosoftMvcJQueryValidation

http://www.phpvs.net/2010/04/26/manually-validate-an-asp-net-mvc-form-on-the-client-side-with-microsoftmvcvalidation-js-and-jquery/

http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=5270

http://tpeczek.com/2010/04/making-aspnet-mvc-2-client-side.html

Я пробовал оба MicrosoftMvcJQueryValidation.js и MicrosoftMvcValidation.js. Дело в том, что валидация, по-видимому, не загружает форму в модальном (facebox), в то время как она загружает формы, которые не входят в модальный.

У кого-нибудь есть идея?

ответ

0

Здравствуйте, я, наконец, нашел полное решение для клиента проверяющего ASP.NET MVC с модальным и АЯКС форме:

  1. использования лямбда-выражения текстовое поле и сообщений валидации (TextBoxFor ...)
  2. в MicrosoftMvcJQueryValidation. js заменит готовую функцию вызовом функции, чтобы вы могли вызвать init вручную (см. ниже код 1)
  3. вызов EnableClientSideValidation из функции готовности вашего частичного просмотра (если вы используете ссылку ajax, вызовите функцию в событии OnSuccess).
  4. Если вы отправляете форму ajax, подтвердите ее строками в # Code2 ниже.

Code1

$(document).ready(function() { 
    EnableClientSideValidation(); 
}); 

function EnableClientSideValidation() { 
    var allFormOptions = window.mvcClientValidationMetadata; 
    if (allFormOptions) { 
     while (allFormOptions.length > 0) { 
      var thisFormOptions = allFormOptions.pop(); 
      __MVC_EnableClientValidation(thisFormOptions); 
     } 
    } 
} 

Кодекса2

function validate(formData, jqForm, options) { 
    for (var i = 0; i < formData.length; i++) { 
     if (!formData[i].value) { 
      return false; 
     } 
    } 
} 

Если вы используете JQuery формы, чем просто добавить beforeSubmit: проверить ваш АЯКС вариантов формы.

все!

+0

Другая проблема заключается в том, что если вы используете помощник html.beginform, вам необходимо назначить его id inorder для проверки на рабочий пример Html.BeginForm («действие», «контроллер», FormMethod.Post, new {id = "FormID "})) – Gidon

+0

Я только что заметил, что вставил неправильный код. замените функцию validate следующим образом: function ajaxValidate (formData, jqForm, options) {jqForm.attr ('id'); var formName = jqForm.attr ('id'); $ ('#' + formName) .validate(); if (! $ ('#' + formName) .valid()) {return false; }} – Gidon