【发布时间】:2011-03-31 23:26:36
【问题描述】:
我有一个这样的视图模型:
public class MyViewModel
{
public MyObject myObject{ get; set; }
public List<MyList> myList{ get; set; }
}
我有一个强类型为MyViewModel 的表单视图
此视图允许您输入 MyObject 的属性值,以及创建 MyList 对象的列表。 List 部分工作正常,虽然我认为这会是两者中更难的部分。
假设 MyObject 有一个属性 Description 我创建一个文本框来输入值:
@Html.EditorFor(x => x.myObject.Description);
文本框以MyObject_Description 的 id 呈现...问题是当我将它发布到我的控制器操作时,MyObject 根本没有被绑定(尽管列表项在收到适当的 ID 时会执行“ MyViewModel_MyList[guid].myListValue")
我在这里做错了什么??
编辑:更多信息
视图的第一行是:
@model MyApp.ViewModels.MyViewModel
还有Action方法:
[HttpPost]
public ActionResult Create(MyViewModel myViewModel)
{
}
我正在将一个新的 MyViewModel 传递给局部视图以开始...
public ActionResult Create()
{
MyViewModel model = new MyViewModel();
return PartialView(model);
}
编辑 2
好的,当我渲染包含我调用的表单的局部视图时:
@{Html.RenderAction("Create", "MyController");}
这是从 @model IEnumerable<MyApp.Models.MyObject> 类型的视图中调用的
(此视图显示当前存在的 MyOjects 列表,并在底部呈现部分以允许用户将另一个 MyObject 添加到 DB)
【问题讨论】:
-
你能显示你的视图的第一行吗?你的 Action 方法的第一行/定义行?
-
你的控制器方法是什么样的?您是否还在一个页面中呈现所有元素?
-
也只是为了确保 MyObject 有一个默认的构造函数?
-
是的 MyObject 实际上是一个 EF 对象
-
Placed Get Create 上面有问题的方法...只是传递了一个新的 MyViewModel 实例...
标签: c# asp.net asp.net-mvc asp.net-mvc-3