Jquery 对带有数据批注的集合进行MVC 3客户端验证--不起作用

Jquery 对带有数据批注的集合进行MVC 3客户端验证--不起作用,jquery,asp.net-mvc,asp.net-mvc-3,validation,data-annotations,Jquery,Asp.net Mvc,Asp.net Mvc 3,Validation,Data Annotations,我正试图让客户端验证在我的模型上工作——到目前为止它还没有工作 我的模型有一个集合属性: public class NewsEventsModel { public List<NewsItemDetails> newsItems { get; set; } public int pageNumber { get; set; } public int totalPages { get; set; } public bool canManageNews {

我正试图让客户端验证在我的模型上工作——到目前为止它还没有工作

我的模型有一个集合属性:

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; }
}
我将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> 
   } 
for(int j=0;jmodel.newsItems[j].newsBody,新{@class=“formtextem”,id=editBoxID,rows=“10”,style=“width:54em”})
@Html.ValidationMessageFor(model=>model.newsItems[j].newsBody)
} 
但是,当我删除文本区域中的所有文本并单击“保存”时,不会显示“必需”消息。。当我违反任何其他规则时,也不会出现任何消息

但是,如果我在顶级NewsEventsModel中的一个属性上放置验证注释,然后将其作为文本框包含在视图中,则客户端验证确实有效。它只是不适用于较低级别的NewsItemDetails类


我缺少什么?

尝试在视图中使用编辑器模板:

@Html.EditorFor(x => x.newsItems)
和内部
~/Views/Shared/EditorTemplates/NewsItemDetails.cshtml

@model AppName.Models.NewsItemDetails

// bunch of stuff
// then:
<div class="editblock">
    @Html.TextAreaFor(model => model.newsBody, new { @class = "formtextem", id = editBoxID, rows = "10", style = "width: 54em" })
    @Html.ValidationMessageFor(model => model.newsBody)
</div> 
@model-AppName.Models.NewsItemDetails
//一堆东西
//然后:
@Html.TextAreaFor(model=>model.newsBody,new{@class=“formtextem”,id=editBoxID,rows=“10”,style=“width:54em”})
@Html.ValidationMessageFor(model=>model.newsBody)

真管用!到目前为止,我还没有研究过模板,但现在我会,因为我看到了它们的强大功能。谢谢我唯一需要改变的是使用@Html.EditorFor(x=>x.newitems[j])——因为它是在一个循环中。否则,每次通过循环,MVC都会为集合中的所有项目生成文本框(起初我没有注意到,因为在用户单击“编辑”之前,它们是隐藏的)。但在其他情况下,这可能是一个理想的结果——很高兴知道。
@model AppName.Models.NewsItemDetails

// bunch of stuff
// then:
<div class="editblock">
    @Html.TextAreaFor(model => model.newsBody, new { @class = "formtextem", id = editBoxID, rows = "10", style = "width: 54em" })
    @Html.ValidationMessageFor(model => model.newsBody)
</div>