1
내 모델에서 작동하도록 클라이언트 측 유효성 검사를 얻으려고합니다. 지금까지 작동하지 않습니다.데이터 주석이있는 컬렉션에서 MVC 3 클라이언트 측 유효성 검사가 작동하지 않습니다.
내 모델은 모음의 속성이 있습니다
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는 thusly 히 정의 :
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 클래스에서는 작동하지 않습니다.
무엇이 여기에 있습니까?
을! 나는이 시점에서 템플릿을 조사하지 않았지만 지금부터 얼마나 강력한지 알게 될 것입니다. 감사! – Cynthia
@Cynthia, 예 편집기/디스플레이 템플릿은 매우 유용합니다. –
내가 변경해야했던 유일한 것은 @ Html.EditorFor (x => x.newsItems [j])를 사용하는 것이 었습니다. 루프에 있기 때문입니다. 그렇지 않으면 루프를 통해 매번 컬렉션의 모든 항목에 대한 텍스트 상자가 생성되었습니다 (사용자가 EDIT를 클릭 할 때까지 숨겨져 있기 때문에 처음에는 알지 못했습니다). 그러나 다른 상황에서는 이것이 바람직한 결과 일 수 있습니다. – Cynthia