Мой фонASP.NET MVC проверки в частичном и возврата к просмотру Родитель
Я работаю над первым серьезным проектом с использованием ASP.NET MVC 4. Я работаю на веб-разработки, так как классические дни ASP и имеют получил хорошее удержание на Webforms. MVC очень увлекательный, и я делаю хороший прогресс. Но теперь я в ситуации, когда мне нужна помощь на этом форуме.
Запрос фон
У меня есть родительское представление и внутри него есть частичный вид. Частичный вид содержит кнопку формы и отправки. У частичного представления есть собственная модель локального представления, и эта модель просмотра является одним из свойств модели представления родителя.
В случае, если проверки на частичные представления не удались, я хочу показать родительское представление как есть и выделить недопустимые поля в частичном представлении.
Код не прерывается нигде, но когда есть ошибка проверки, каким-то образом я не нахожу правильный способ показать родительское представление с инициализированной моделью, переданной ему. И, конечно, выделить ошибки в частичном представлении.
Любая помощь будет оценена по достоинству. Благодарю.
код выглядит следующим:
Просмотр моделей:
public class ParentViewModel
{
public int TitleId { get; set; }
public string Name { get; set; }
public ChildViewModel Child { get; set; }
}
public class ChildViewModel
{
[Required]
public decimal Rating { get; set; }
[Required]
[StringLength(500)]
[Display(Description = "Review")]
[RegularExpression("([a-zA-Z0-9 .&'-]+)", ErrorMessage = "Enter only alphabets and numbers of First Name")]
public string ReviewText { get; set; }
}
Контроллер
public class TestController : Controller
{
public ActionResult Index()
{
var model = new ParentViewModel()
{
TitleId = 1,Name = "Parent name",
Child = new ChildViewModel()
{
Rating = 2.5M, ReviewText = "Its a must watch!"
}
};
return View("Index", model);
}
[HttpPost]
public ActionResult SubmitReview(ChildViewModel model)
{
if (ModelState.IsValid)
{
return View("_child", model);
}
ModelState.AddModelError("", "Some Error.");
return View("_child", model);
}
}
Родитель Посмотреть
@model ParentViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@Model.TitleId, @Model.Name
</div>
<div>
@Html.Partial("_child", Model.Child)
</div>
</body>
</html>
Частичный вид (_child.cshtml)
@model ChildViewModel
@using (Html.BeginForm("SubmitReview", "Test"))
{
@Html.ValidationSummary(true)
@Html.TextBoxFor(m => m.Rating) @Html.ValidationMessageFor(m => m.Rating)
@Html.TextBoxFor(m => m.ReviewText) @Html.ValidationMessageFor(m => m.ReviewText)
<input type="submit" value="Log in" />
}
Это имеет смысл , Но есть ли способ избежать повторной инициализации родительской модели при отправке? Сейчас я пытаюсь передать родительскую модель в SubmitReview, но родительская модель не запоминает значения. Но спасибо за ваше предложение, я буду реализовывать это, потому что он будет работать. –
на submit, как я должен удержать ключ родителя для его инициализации? Надеюсь, у меня есть смысл ..... –
Вы можете перемещать форму в родительский вид (это на самом деле хорошая практика), а затем добавить родительскую модель в скрытые поля, поэтому, когда вы нажмете кнопку «Отправить», вы получите полные данные в контроллере –