2015-02-10 1 views
2

Я знаю, что это очень распространенный вопрос, но я не могу найти никого, кто решает мою проблему.Как показать ошибки проверки на стороне сервера на asp.net mvc с помощью Ajax

Я использую Asp.net mvc5. Я делаю вызов Ajax с помощью помощников, которые предоставляют asp. Код в шаблоне выглядит так.

@using (Ajax.BeginForm("Register", "Account",null , new AjaxOptions 
     { 
      HttpMethod = "POST", 
      Url = "/Account/Register/", 
      OnSuccess = "onSuccess" 
     })) 
     { 

<p>@Html.ValidationMessage("Register.Email")</p> 
@Html.TextBox("Email", null, new { placeholder = "Enter your email") 
<input type="submit" value="submit" /> 

} 

Моя проблема в том, что я хочу показать Validations ошибки, которые приходят с сервера с помощью AJAX обратного вызова, без повторного отображения страницы.

Теперь мой вопрос. Как я должен написать действие на контроллере для автоматической обработки этой проблемы? Автоматически я имею в виду, каков способ вернуть что-то на действие контроллера, которое заполняет поля ошибки, когда модель недействительна.

Любая помощь будет оценена, спасибо.

ответ

2

Если вы добавите ошибки состояния модели в качестве пары значений ключа в своем контроллере, вы можете использовать метод ниже для их отображения.

JavaScript

Это находит все сообщение проверки охватывает с ключами модели состояния ошибки и добавляет сообщение об ошибке красного к ним. Обратите внимание, что вы можете настроить это, чтобы отображать много сообщений об ошибках против ключа.

public doValidation(e) 
{ 
     if (e.data != null) { 
      $.each(e.data, function (key, value) { 
       $errorSpan = $("span[data-valmsg-for='" + key + "']"); 
       $errorSpan.html("<span style='color:red'>" + value + "</span>"); 
       $errorSpan.show(); 
      }); 
     } 
} 

Посмотреть

Добавьте параметр OnFailure, который указывает на вновь созданный doValidation яваскрипта методом. Аргумент e автоматически передается из результата json. Этот doValidation может быть вызван из любого из ваших javascript-методов, поэтому вы можете также называть его от onSuccess.

{ 
    HttpMethod = "POST", 
    Url = "/Account/Register/", 
    OnSuccess = "onSuccess", 
    OnFailure = "doValidation" 
} 
Смежные вопросы