1

我有以下嵌套的视图模型类...

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

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

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

[HttpPost]
public ActionResult Edit(CustomerModel model)

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

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

4

1 回答 1

2

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

我想我第一次读到这个是在我寻找一些 DateTime 验证的时候。看看这个链接,也许你的局部视图会有一些Html.EditorFor(model => model.line1)'s 和Html.EditorFor(model => model.city)'s

这并不能使一切都变得超级自动化,但它有助于将来编辑地址等数据类型。

于 2010-09-15T02:50:19.043 回答