2010-09-14 47 views
1

我有以下嵌套ViewModel类...mvc.net如何编辑嵌套视图模型类

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?

回答

2

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

我认为我读到的第一个地方是当我正在寻找一些DateTime验证。退房this链接,也许你的部分观点将有一些Html.EditorFor(model => model.line1)的和Html.EditorFor(model => model.city)

这并不使一切超级自动的,但它的数据类型,如地址的未来的编辑帮助。