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正是如此定義:
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 2011-03-09 18:08:41
@Cynthia,是編輯/顯示模板是超級有用的。 – 2011-03-09 18:12:07
我唯一需要改變的地方是使用@ Html.EditorFor(x => x.newsItems [j]) - 因爲它在循環中。否則MVC每次通過循環爲集合中的所有項目生成文本框(我沒有注意到,因爲它們在用戶點擊EDIT之前是隱藏的)。但在其他情況下,這可能是一個理想的結果 - 很好的瞭解。 – Cynthia 2011-03-09 18:34:26