我有一个继承IValidatableObject
的类,我的验证通过IEnumerable<ValidationResult>
函数验证。在这个函数中,我设法检查所有字段并返回一条ValidationResult
消息。
但是,我的问题是membernames.ToArray()
只传递一个值。我在取消查看页面时以及使用Html.ViewData.ModelState.IsValid("<fieldname>")
检查字段是否有效时证明了这一点
下面是我返回ValidationResult消息时包含所有无效字段的代码。 string.Join(",", membernames.ToArray())
将返回字段的集合。 (即“FirstName”,“LastName”)
List<string> membernames = new List<string>();
//Firstname
if (FirstName.Trim() == string.Empty)
{
isValid = false;
membernames.Add(@"""FirstName""");
}
//Lastname
if (LastName.Trim() == string.Empty)
{
membernames.Add(@"""LastName""");
isValid = false;
}
if (!isValid)
{
yield return new ValidationResult("Please complete all fields marked with *", new[] { string.Join(",", membernames.ToArray()) });
}
我是否在new[] { .. }
?
请指教。提前谢谢。
答案 0 :(得分:0)
在Mvc3中:
控制器中的:
ModelState.AddModelError("FirstName", "FirstName Minimum 2 Char");
ModelState.AddModelError("FirstName", "FirstName Maximum 20 Char");
ModelState.AddModelError("LastName", "Error Message");
如果您只想为所有属性发送一条错误消息:
ModelState.AddModelError("", "First Error Message");
ModelState.AddModelError("", "Second Error Message");
在视图中:
@using (Html.BeginForm()) {
@Html.ValidationSummary()
@Html.LabelFor(model => model.FirstName)
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
@Html.LabelFor(model => model.LastName)
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
//other fields...
}
不要忘记jquery和Validation插件:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>