ASP.NET MVC中ModelState.AddModelError的关键参数是什么?
如果validation失败,我喜欢在我的控制器中编写validation函数来修改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
这个愚蠢的“键”参数放置什么。 (在这个例子中,我只是将它设置为我的UI显示名称。)
MVC开发人员在添加时想到了什么?
ValidationMessage HTML Helper使用Key来知道要显示的确切错误消息。
例:
<%=Html.TextBox("Name") %> <br /> <%=Html.ValidationMessage("Name") %>
ValidationMessage助手将在ModelState字典中显示具有“Name”键的消息。
key
参数可用于将validation错误与表单字段相关联。
如果您使用@Html.TextBoxFor
(或类似的)和@Html.ValidationMessageFor
,则可以从正在validation的字段的HTML name
(使用检查元素)中获取该键的值。
如果您刚刚使用了HTML <input>
,则可以使用@Html.ValidationMessage("AKeyIMadeUp")
添加一个validation占位符,并获取一条消息,如下所示: ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good");
。
其实你可以设置任何validation信息,而你的表单提交不成功,假设你在模型中创build一个字段
[Required] [DataType(DataType.Password)] [Display(Name = "Current password")] public string OldPassword { get; set; }
而当你的模型状态无效时,你可以设置错误消息绑定与该字段如。
ModelState.AddModelError("OldPassword", "Current Password do not match ");
那么你的错误信息将被绑定到名为“OldPassword”的模型中的字段