Я пытаюсь заставить клиентскую проверку работать на моей модели - пока она не работает.
У моей модели есть свойство, которое является коллекцией:
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.
Что мне здесь не хватает?