![](/img/trans.png)
[英]ModelState.AddModelError on form level with ASP.NET MVC 2 RC
[英]What is the point of the key parameter in ModelState.AddModelError in ASP.NET MVC?
我在我的控制器中添加了驗證檢查,如果驗證失敗,則會修改ModelState
。
例如:
private bool ValidateMoney(string raw, string name, decimal min, decimal max) {
try {
var dec = Convert.ToDecimal(raw);
if (dec < min) {
throw new ArgumentOutOfRangeException(name + " must be >= " + min);
}
else if (dec > max) {
throw new ArgumentOutOfRangeException(name + " must be <= " + max);
}
}
catch (Exception ex) {
ModelState.AddModelError(name, ex.GetUserMessage());
}
return ModelState.IsValid;
}
但是,我永遠不知道在ModelState.AddModelError
傳遞key
參數的值。 (在示例中,我只是將其設置為我的UI顯示名稱。)
參數是什么以及我應該如何使用它?
ValidationMessage HTML Helper使用密鑰來了解要顯示的確切錯誤消息。
例:
<%=Html.TextBox("Name") %> <br />
<%=Html.ValidationMessage("Name") %>
ValidationMessage幫助程序將顯示ModelState字典中具有鍵“Name”的消息。
key
參數可用於將驗證錯誤與表單字段相關聯,從而控制消息在屏幕上的顯示位置。 它既可以與HtmlHelper類型的輸入一起使用,也可以與簡單的HTML輸入一起使用。
如果您使用了@Html.TextBoxFor
(或類似)和@Html.ValidationMessageFor
,則可以從要驗證的字段的HTML name
中獲取密鑰的值(使用Inspect Element)。
如果您剛剛使用了HTML <input>
,則可以使用@Html.ValidationMessage("AKeyIMadeUp")
添加驗證占位符,並在其中顯示一條消息: ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good");
。
實際上,您可以在表單提交失敗時設置任何驗證消息,假設您在模型中創建了一個字段
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
當你的modelState失效時你可以設置錯誤消息綁定到該字段,如as。
ModelState.AddModelError("OldPassword", "Current Password do not match ");
那么你的錯誤信息將與名為“OldPassword”的模型中的字段綁定
對不起Necropost。 上面的答案沒有我認為有用的細節(這是我正在尋找的!!)
為了創建“模型范圍”驗證錯誤 - 然后您只需添加string.Empty作為您的密鑰。
例如
ModelState.AddModelError(string.Empty, "This is my Model Level Message");
感謝: http : //www.tutorialsteacher.com/mvc/htmlhelper-validationsummary提示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.