Мой фон
Я работаю над первым серьезным проектом с использованием 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" />
}