【问题标题】:mvc.net how to edit nested viewmodel classesmvc.net 如何编辑嵌套的视图模型类
【发布时间】:2011-04-12 10:17:11
【问题描述】:

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

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 之外,还有什么简单的解决方案吗?

【问题讨论】:

    标签: asp.net-mvc nested-class


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2011-11-13
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多