在列表中使用MVC4中的IValidatableObject

本文关键字:IValidatableObject 中的 MVC4 列表 | 更新日期: 2023-09-27 18:15:24

在我的MVC4应用程序。我有一个名为SixweekRangeViewModel

的视图模型
public class SixweekViewModel: IValidatableObject
{
    public int Position { get; set; }
    public DateTime? StartDate { get; set; }
    public DateTime? EndDate { get; set; }
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (StartDate.HasValue || EndDate.HasValue)
        {
            if (!StartDate.HasValue || !EndDate.HasValue)
            {
                yield return new ValidationResult("*");
                // new string[] { "StartDate", "FinalDate" }
            }
        }
    }
}

这是我显示项目的视图

@model List<Contoso.MvcApplication.ViewModels.Assignments.SixweekViewModel>
<h2>Configure Sixweeks</h2>
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Configure Sixweeks</legend>
        @for (int i = 0; i < Model.Count; i++) {
        <div>
            @Html.HiddenFor(model => model[i].Position)
            @Html.TextBoxFor(model => model[i].StartDate, "{0:d/MMM/yyyy}", new { @class = "from" + i })
            @Html.TextBoxFor(model => Model[i].EndDate, "{0:d/MMM/yyyy}", new { @class = "to" + i })
        </div>
        }
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}

当我按Save时,调试器得到validationResult作为错误。但是千万不要在视图中显示错误信息。

我认为IValidatableObject应该在List<T>中实现,而不是在T对象中实现,但这只是一个想法。我错过了什么?

在列表中使用MVC4中的IValidatableObject <T>

你可以为任何类[Models]实现IValidateObject,而不仅仅是列表。您应该返回键及其对应的值。因为您只返回了"*"作为键,所以没有向您显示值[错误消息]。请点击此链接

相关文章:
  • 没有找到相关文章