Par*_*rke 15 c# asp.net asp.net-mvc asp.net-mvc-4
我的背景
我正在使用ASP.NET MVC 4开展第一个认真的项目.自从经典的ASP时代以来,我正致力于Web开发,并且已经很好地掌握了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; }
}
Run Code Online (Sandbox Code Playgroud)
调节器
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);
}
}
Run Code Online (Sandbox Code Playgroud)
父视图
@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>
Run Code Online (Sandbox Code Playgroud)
部分视图(_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" />
}
Run Code Online (Sandbox Code Playgroud)
您需要显示父视图而不是子视图,因此操作应如下所示:
[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 );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23961 次 |
最近记录: |