部分视图中的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 ); }