1
我有一個簡單的問題的數據模型:驗證MVC數據集合
public class Question {
int QuestionId { get; set; }
string Text { get; set; }
string Answer { get; set; }
string ValidationMessage { get; set; }
};
使用這個類我建立了一個視圖模型:
public class QuestionViewModel {
string Introduction { get; set; }
IEnumerable<Question> Questions { get; set; }
};
我的控制器的構建視圖模型(從數據源)和呈現視圖:
@model QuestionViewModel
@using (Html.BeginForm()) {
if (Model.Questions != null) {
<ol>
@Html.EditorFor(m => Model.Questions)
</ol>
}
@Html.ValidationSummary("Unable to process answers...")
<input type="submit" value="submit" />
}
此視圖利用了EditorTemplate:
@model Question
<li>
@Html.HiddenFor(m => m.Questionid)
@Html.TextBoxFor(m => m.Answer)
@Html.ValidationMessageFor(m => m.Answer)
</li>
現在,當頁面回發時,控制器驗證響應:
[HttpPost]
public ActionResult Response(QuestionViewModel model) {
if (ModelState.IsValid) {
for (int i = 0; i < model.Questions.Count(); i++) {
Question q = model.Questions[i];
string questionId = String.Format("Questions[{0}]", i);
if (String.IsNullOrWhiteSpace(q.Answer)) {
ModelState.AddModelError(questionId, q.ValidationMessage);
}
}
}
}
我遇到的問題是,大多數能正常工作 - 在驗證並驗證摘要顯示正確的驗證信息。問題是,我不能讓個別字段驗證渲染錯誤:
<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="Questions[0].StringValue"></span>
正如你可以看到,當我打電話的ModelState.AddModelError()方法,我目前使用的格式的鍵值「問題[0]「,但我也嘗試過」Questions_0「和其他各種組合。
任何幫助/指導將不勝感激。
[道歉過於長的帖子]