我正在使用 MVC3 剃须刀。我有一个场景,我必须在同一个父视图上多次使用部分视图。我遇到的问题是,当渲染父视图时,它会在这些部分视图中生成相同的输入控件名称和 ID。由于我的部分视图绑定到不同的模型,因此当视图在“保存”上发回时,它会崩溃。知道如何使控件 ID/名称唯一,可能是如何给它们添加前缀吗?
Awaiting
Nabeel
就我个人而言,我更喜欢使用编辑器模板,因为它们会处理这个问题。例如,您可以拥有以下视图模型:
public class MyViewModel
{
public ChildViewModel Child1 { get; set; }
public ChildViewModel Child2 { get; set; }
}
public class ChildViewModel
{
public string Foo { get; set; }
}
以及以下控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Child1 = new ChildViewModel(),
Child2 = new ChildViewModel(),
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
并在里面Index.cshtml
view:
@model MyViewModel
@using (Html.BeginForm())
{
<h3>Child1</h3>
@Html.EditorFor(x => x.Child1)
<h3>Child2</h3>
@Html.EditorFor(x => x.Child2)
<input type="submit" value="OK" />
}
最后一部分是编辑器模板(~/Views/Home/EditorTemplates/ChildViewModel.cshtml
):
@model ChildViewModel
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
使用EditorFor
您可以包含主视图模型的不同属性的模板,并且将生成正确的名称/ID。除此之外,您还将在 POST 操作中正确填充视图模型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)