获取传递给部分视图的嵌套复杂对象的值。我有一个ViewModel,它的成员之一是一个复杂的对象。复杂对象有4个属性(所有字符串)。我正在尝试创建一个可重用的部分视图,在其中我可以传递复杂的对象,并让它为其属性生成带有html帮助器的html。一切都很好。但是,当我提交表单时,模型绑定器没有将值映射回ViewModel的成员,因此在服务器端没有得到任何信息。如何将用户键入的值读入复杂对象的html帮助程序中。视图模型public class MyViewModel{
public string SomeProperty { get; set; }
public MyComplexModel ComplexModel { get; set; }}MyComplexModelpublic class MyComplexModel{
public int id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
....}控制器public class MyController : Controller{
public ActionResult Index()
{
MyViewModel model = new MyViewModel();
model.ComplexModel = new MyComplexModel();
model.ComplexModel.id = 15;
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
// model here never has my nested model populated in the partial view
return View(model);
}}视点@using(Html.BeginForm("Index", "MyController", FormMethod.Post)){
....
@Html.Partial("MyPartialView", Model.ComplexModel)}局部视图@model my.path.to.namespace.MyComplexModel@Html.TextBoxFor(m => m.Name)...如何在表单提交时绑定这些数据,以便父模型包含从部分视图输入到web表单中的数据?谢谢编辑:我发现我需要添加“ComplexModel”。到部分视图(TextBox)中的所有控件名称,以便它映射到嵌套对象,但我不能将ViewModel类型传递给部分视图以获得额外的层,因为它需要是通用的,才能接受几种ViewModel类型。我可以用javascript重写name属性,但在我看来,这似乎过于简单了。我还能怎么做呢?编辑2:我可以用新的{name=“ComplexModel.Name”}静态地设置name属性,所以我认为我在做生意,除非有人有更好的方法?
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
- 3 回答
- 0 关注
- 417 浏览
添加回答
举报
0/150
提交
取消