mvc.net如何编辑嵌套的viewmodel类

时间:2010-09-14 23:01:23

标签: asp.net-mvc nested-class

我有以下嵌套的viewmodel类...

public class CustomerModel
{
  public string name;
  public Address mailingAddress;
  public Address billingAddress;
}

public class Address
{
  public string line1;
  public string city;
  public string country;
}

我希望有一些自动创建编辑页面的方法,但我尝试和阅读的所有内容都表明框架和代码生成只处理viewmodel中的顶级属性。 'name'属性是视图和动作中唯一生成的属性,只有'name'属性填充了地址保留为null。

[HttpPost]
public ActionResult Edit(CustomerModel model)

但是,如果我手动添加地址输入框(通过部分视图)并切换到动作的FormCollection签名,我会在屏幕上输入相应的地址值。

除了创建自己的函数以从FormCollection转换为CustomerModel之外,还有其他简单的解决方案吗?

1 个答案:

答案 0 :(得分:2)

你能在这里使用编辑器模板吗?基本上,您创建一个强类型的局部视图(地址是您的案例中的类型),将其存储在特定文件夹(/ Views / Shared / EditorTemplates)中,并且每当为该数据类型的成员呈现编辑器时,部分视图而是自动渲染。因此,调用Html.EditorFor(model => model.mailingAddress)会改为呈现局部视图。

我认为我读到的第一个地方就是我在寻找一些DateTime验证。查看this链接,也许您的部分视图会有一些Html.EditorFor(model => model.line1)Html.EditorFor(model => model.city)

这并不能使所有内容超级自动化,但它有助于将来编辑像Address这样的数据类型。