C# ASP NET MVC 5.0 Postback переходит к Html.RenderPartial() при ошибке проверки модели представления
У меня неожиданное сообщение о действии Html.RenderPartial(), когда главная страница не проходит проверку данных модели. Если при проверке модели нет ошибок, страница отправляется обратно к ожидаемому действию контроллера. Кто-нибудь сталкивался с этим и какое решение они использовали?
Дальнейшее объяснение:
У меня есть MVC .cshtml представление, которое имеет настройку обратной записи следующим образом:
@using (Html.BeginForm("Profile", "User", FormMethod.Post))
{
// html code and stuff..
@{ Html.RenderAction("ImageUpload", "User"); }
<input type="submit" value="Save" />
}
Когда я нажимаю кнопку "Сохранить", страница должна вернуться User/Profile
как настройка в Html.BeginForm
метод: @using (Html.BeginForm("Profile", "User", FormMethod.Post))
,
Страница работает, как и ожидалось, когда я делаю сообщение назад, и при проверке модели нет ошибок... она отправляет сообщения User/Profile
как и ожидалось.
Однако при возникновении ошибки проверки с моделью основного вида страница отправляется обратно в Html.RederPartial
действие: @{ Html.RenderAction("ImageUpload", "User"); }
, Другими словами, вместо публикации User/Profile
как и положено User/ImageUpload
,
SNAPSHOT OF VIEWMODEL (модель предоставлена пользователю / профилю)
[Required]
[StringLength(1000, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 20)]
[DataType(DataType.Text)]
[Display(Name = "About Me* (Write up to 1000 characters about yourself)")]
public virtual string Summary { get; set; }
public ActionResult Profile(UserModel userModel)
{
if (ModelState.IsValid)
{
//DO STUFF
}
// If we got this far, something failed, redisplay form
return View(userModel);
}
Если пользователь не соответствует проверке модели, введя менее 20 символов в Summary
свойство (параметр проверки минимальной длины) сообщение возвращается к Html.RenderPartial()
скорее, чем ожидалось Html.BeginForm("Profile", "User", FormMethod.Post)
,
Кто-нибудь сталкивался с этим раньше и какие-нибудь идеи о том, как решить?