2011-11-28 70 views
0

我想在我的視圖中顯示錯誤消息。做這個的最好方式是什麼?如何將錯誤消息傳遞給視圖?

什麼取代「???」在我的代碼下面?我不想簡單地使用Html.ValdiationSummary,因爲現在我想我需要自己處理列表,並將某些錯誤消息放在不同的地方。例如,下面的代碼實際上需要擴展以將一些錯誤消息放入浮動div中,而其他代碼可能會顯示在頁面的頂部。

有沒有更好的方法來做到這一點?例如我應該使用完全不同的方法將來自控制器的錯誤消息傳遞給視圖嗎?

我的控制器:

public ActionResult ForgotUsername(ForgotUsernameModel model) 
{ 
    ... 
    if (!Users.CheckUsername(model.UserName)) { 
     ModelState.AddModelError("", "That username does not exist."); 
    } 
    .... 
    return View(model); 
} 

筆者認爲:

.... 
<% 
if (???) { 
    foreach (KeyValuePair<string, ModelState> item in ViewData.ModelState) {    
     if (item.Value != null && item.Value.Errors != null && item.Value.Errors.Count > 0) { 
      foreach (ModelError e in item.Value.Errors) {      
       Response.Write(String.Format("<div>{0}</div>", e.ErrorMessage)); 
      } 
     } 
    } 
} 
%> 

回答

3
<% if (!ViewData.ModelState.IsValid) { %> 
    <%= Html.ValidationSummary(true) %> 
<% } %> 

或者乾脆:

<%= Html.ValidationSummary(true) %> 
+0

好吧,'ViewData.ModelState.IsValid'看起來像什麼我尋找。至於實際顯示錯誤信息,我想避免使用'Html.ValidationSummary()',因爲我想控制它們的渲染方式。例如,我的錯誤對話框是一個浮動的div,位於我的表單旁邊。我想打破字段級別的錯誤,並將顯示爲懸停框的那些顯示爲感嘆號的錯誤顯示出來,然後在焦點更改爲輸入時將其展開到視圖中。那有意義嗎? – parleer

相關問題