我有以下嵌套的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之外,还有其他简单的解决方案吗?
答案 0 :(得分:2)
你能在这里使用编辑器模板吗?基本上,您创建一个强类型的局部视图(地址是您的案例中的类型),将其存储在特定文件夹(/ Views / Shared / EditorTemplates)中,并且每当为该数据类型的成员呈现编辑器时,部分视图而是自动渲染。因此,调用Html.EditorFor(model => model.mailingAddress)
会改为呈现局部视图。
我认为我读到的第一个地方就是我在寻找一些DateTime验证。查看this链接,也许您的部分视图会有一些Html.EditorFor(model => model.line1)
和Html.EditorFor(model => model.city)
这并不能使所有内容超级自动化,但它有助于将来编辑像Address这样的数据类型。