#asp.net-mvc #validation #asp.net-mvc-4 #razor
#asp.net-mvc #проверка #asp.net-mvc-4 #razor
Вопрос:
У меня есть частичное представление, которое добавляется к основному представлению с помощью вызова ajax, вызываемого нажатием пользователем кнопки (пользователь нажимает кнопку, и частичное представление добавляется на страницу).
Частичное представление строго типизировано для модели, отличной от главной страницы. На моей главной странице вверху отображаются ошибки проверки, а затем также отображается сообщение под каждым полем. Ошибки проверки для моего частичного представления отображаются в верхней части страницы, но они не отображаются вместе с самим полем.
Поле из частичного представления:
<td>
@Html.LabelFor(model => model.EmploymentCompany, "* Employer Name")
<input type="text" name="TempEmployments[@idx].EmploymentCompany" class="field panel-field" maxlength="40" style="width: 250px !important;" value="@EmploymentCompany"/>
@Html.ValidationMessage("EmploymentCompany")
</td>
Отображается как:
<td>
<label for="EmploymentCompany">* Employer Name</label>
<input type="text" name="TempEmployments[0].EmploymentCompany" class="field panel-field" maxlength="40" style="width: 250px !important;">
<span class="field-validation-valid" data-valmsg-for="EmploymentCompany" data-valmsg-replace="true"></span>
<td>
В контроллере, где вызывается проверка:
[HttpPost]
public ActionResult Create(Applicant application)
{
this.ModelState.AddModelErrors(application.Validate(update: false));
//if valid, other stuff is done. otherwise:
return View(application);
}
В главном представлении, где ошибки проверки отображаются вверху:
if (!this.ViewData.ModelState.IsValid)
{
<div class="validation-summary-errors" data-valmsg-summary="true">
<ul>
@foreach (ModelState modelState in ViewData.ModelState.Values)
{
foreach (ModelError error in modelState.Errors)
{
<li>@Html.Raw(error.ErrorMessage)</li>
}
}
</ul>
</div>
}
И в объекте, где добавляются ошибки проверки:
foreach (var job in TempEmployments)
{
if (string.IsNullOrWhiteSpace(job.EmploymentCompany))
{
errorDictionary.Add("EmploymentCompany", "Company Name is required");
}
}
И вот как выглядят ошибки в верхней части страницы:
И частичное представление: