我正在尝试让客户端验证在我的模型上工作——到目前为止它还不起作用。
我的模型有一个集合属性:
public class NewsEventsModel
{
public List<NewsItemDetails> newsItems { get; set; }
public int pageNumber { get; set; }
public int totalPages { get; set; }
public bool canManageNews { get; set; }
public long userID { get; set; }
}
NewsItemDetails 的定义如下:
public class NewsItemDetails
{
public long itemID { get; set; }
public long postedByID { get; set; }
public DateTime datePosted { get; set; }
[Required(ErrorMessage = "Please enter news or event text")]
[StringLength(100)]
[RegularExpression(RegExpressions.freeTextRestrict)]
public string newsBody { get; set; }
[StringLength(50)]
[RegularExpression(RegExpressions.freeTextRestrict)]
public string newsTitle { get; set; }
}
我将 NewsEventsModel 发送到视图。然后在我看来我包括
<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>
然后在我的视图代码中
for (int j = 0; j < Model.newsItems.Count(); j++)
{
/// bunch of stuff
// then:
<div class="editblock">
@Html.TextAreaFor(model => model.newsItems[j].newsBody, new { @class = "formtextem", id = editBoxID, rows = "10", style = "width: 54em" })
@Html.ValidationMessageFor(model => model.newsItems[j].newsBody)
</div>
}
但是,当我删除文本区域中的所有文本并单击“保存”时,不会出现“必需”消息。当我违反任何其他规则时,也不会出现任何消息。
但是,如果我将验证注释放在顶级 NewsEventsModel 中的属性之一上,然后将其作为文本框包含在视图中,则客户端验证确实有效。它只是不适用于较低级别的 NewsItemDetails 类。
我在这里缺少什么?