Проверка на стороне сервера не работает при частичном просмотре MVC

#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");
                }
}
  

И вот как выглядят ошибки в верхней части страницы:
сообщение об ошибке

И частичное представление:

частичный просмотр