如何在验证结果中传递成员名称 IEnumerable



我得到了一个继承IValidatableObject的类,我的验证通过IEnumerable<ValidationResult>函数进行验证。在这个函数中,我设法检查所有字段并返回一条ValidationResult消息。

但是,我的问题是membernames.ToArray()只传递一个值。我在去乞求视图页面以及当它使用Html.ViewData.ModelState.IsValid("<fieldname>")检查字段是否有效时证明了这一点

下面是我返回包含所有无效字段的验证结果消息时的代码。string.Join(",", membernames.ToArray())将返回字段的集合。(即"名字"、"姓氏"(

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[] { .. }中传递正确的类型?

请指教。提前谢谢。

在 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和验证插件:

<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>

最新更新