【发布时间】:2023-04-06 15:37:02
【问题描述】:
我正在尝试让客户端验证在我的模型上工作 - 到目前为止它不起作用。
我的模型有一个集合属性:
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 类。
我在这里错过了什么?
【问题讨论】:
标签: jquery asp.net-mvc asp.net-mvc-3 validation data-annotations