部分视图中的ASP.NET MVCvalidation并返回到父视图

我的背景

我正在使用ASP.NET MVC 4开展第一个认真的项目。自从经典的ASP时代以来,我正致力于Web开发,并且已经很好地掌握了Webforms。 MVC非常令人兴奋,并且正在取得良好进展。 但现在我处在这个论坛需要帮助的情况下。

查询背景

我有一个父视图,里面有一个局部视图。 部分视图包含表单和提交按钮。 局部视图具有自己的局部视图模型,该视图模型是父视图模型的属性之一。

如果部分视图的validation失败,我想,按原样显示父视图并在部分视图中突出显示无效字段。

代码不会破坏任何地方,但是当存在validation错误时,不知何故,我找不到正确的方式来显示传递给它的初始化模型的父视图。 当然,要在局部视图中突出显示错误。

任何帮助,将不胜感激。 谢谢。

代码如下所示:

查看型号:

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; }    Index   
@Model.TitleId, @Model.Name
@Html.Partial("_child", Model.Child)

部分视图(_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)  } 

您需要显示父视图而不是子视图,因此操作应如下所示:

 [HttpPost] public ActionResult SubmitReview(ChildViewModel model) { var parentViewModel = write init code here; parentViewModel.ChildModel = model; if (ModelState.IsValid ) { return View("Index", parentViewModel ); } ModelState.AddModelError("", "Some Error."); return View("Index", parentViewModel ); }