2014-01-20 33 views
2

在我的控制器中有一個列表(最多3個),與密碼檢查相關的錯誤消息將存儲在名爲Password的屬性中。一個屬性,帶有mvc c中的模型錯誤列表#

IEnumerable<PasswordMessages> passwordMessage = LoanTrackerServices.CheckPasswordRequirements(model.NewPassword, model.EmailId); 
if (passwordMessage.Count() > 0) 
{ 
    foreach (PasswordMessages pm in passwordMessage) 
    { 
     ModelState.AddModelError("Password",(pm.Message)); 
    } 
    LoginPageModel loginModel = new LoginPageModel(); 
    return View("Index", new HomePageModel() { Register = model, Login = loginModel }); 
} 

但在我看來,我無法弄清楚如何獲取所有這些(最多3個)錯誤消息。現在只有列表中的第一條消息正在顯示。這裏是我的代碼

for (int i = 0; i < ViewData.ModelState["Password"].Errors.Count; i++) 
{ 
    @Html.ValidationMessage("Password") 
} 

如何獲取所有這些與密碼存儲在一起的錯誤消息?

回答

5

你只需要一個總結,而不是消息:

@Html.ValidationSummary("Password") 

所以擺脫這樣的:

for (int i = 0; i < ViewData.ModelState["Password"].Errors.Count; i++) 
{ 
    @Html.ValidationMessage("Password") 
} 
+0

這一個工程。但它顯示標題前的消息 – user2619542

+0

@ user2619542,您可以修改模板。只要看看呈現的HTML/CSS並定位渲染的標籤即可。爲了擺脫標題,定位標籤並設置「display:none」。 –

+0

我使用了樣式顯示:無,那麼它根本不顯示錯誤消息。我想要這些錯誤消息只是沒有標題消息 – user2619542

1
@Html.ValidationSummary() 

將顯示在一個地方的所有型號的錯誤是什麼不可取對於大多數情況。

我寫了一個輔助方法,它可以讓你只顯示特定字段的錯誤:https://gist.github.com/DimaSalakhov/8548393。它基於標準ValidationMessageFor<>()

將它添加到您的項目,referrence上查看和使用方法如下:

@Html.ValidationSummaryFor(x => x.Password) 
0
@if(ViewData.ModelState.IsValidField(nameof(Model.Property))) 
{ 
    // show some thing 
} 
else 
{ 
    // show some thing else 
} 

強類型的驗證檢查。

相關問題