2015-02-10 66 views
2

我知道這是一個非常常見的問題,但找不到解決我的問題的任何問題。如何使用Ajax在asp.net mvc上顯示服務器端驗證錯誤

我正在使用Asp.net mvc5。我正在使用提供asp的助手進行Ajax調用。模板中的代碼如下所示。

@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" /> 

} 

我在這裏的問題是,我想表明,來自使用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 JavaScript方法。參數e自動從json結果中傳遞過來。 這個doValidation可以從你的任何javascript方法中調用,所以你也可以從onSuccess調用它。

{ 
    HttpMethod = "POST", 
    Url = "/Account/Register/", 
    OnSuccess = "onSuccess", 
    OnFailure = "doValidation" 
} 
相關問題