Проверка ASP.Net MVC 3 на AjaxForm - PullRequest
2 голосов
/ 09 мая 2011

У меня есть форма ajax на движке бритвы. Для проверки я использую классы dataanotation. Проверка правильности работает, когда пользователь отправляет форму, сообщения проверки работают нормально. Проблема в том, что проверка не будет работать с событиями keyup или blur.

Как активировать проверку без отправки в ajaxform (ajax.beginform)

Вот мой код просмотра:

@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace,       
        UpdateTargetId = "employeeDetail", HttpMethod = "Post", OnComplete = "Complete", 
        Confirm = "Confirm?" }))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model=>model.Email)
    <span style="float:right"><input type="submit" class="tableGenelButton" id="submitButton" value="Kaydet" /></span>
}

Модель:

  [RequiredWithMessage]
  [Display(Name = "E-Mail")]
  public string Email { get; set; }

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Обновление :

Хорошо, очевидно, вы используете Ajax.BeginForm, который использует MicrosoftAjax вместо jQuery (раньше я этого не понимал). Для включения проверки на стороне клиента требуется дополнительная работа:

Вам нужно

<% Html.EnableClientValidation(); %> 

Где-то на вашей странице, а также ссылки на MicrosoftAjax.js, MicrosoftMvcAjax.js и MicrosoftMvcValidation.js

Вот ссылка, которая может быть вам интересна:

Проверка ASP.NET MVC на стороне клиента с помощью Ajax.BeginForm


Чтобы включить проверку на стороне клиента для пользовательского атрибута проверки (я думаю, [RequiredWithMessage] является одним из них), вам необходимо реализовать интерфейс IClientValidatable .

Вот статья, которая объясняет, как это сделать:

Полное руководство по проверке в ASP.NET MVC 3 - часть 2

0 голосов
/ 09 мая 2011

Если у вас есть клиентская проверка включена , вам нужно будет вызвать .validate () в соответствующих событиях:

$("#theFormToValidate input").blur(function(){
    $("#theFormToValidate").validate();
});

и

$("#theFormToValidate input").keyup(function(){
    $("#theFormToValidate").validate();
});
...