同名的两个字段
我有一个ViewModel类来封装“个人”和“业务”模型。我的问题是两个模型都有一个名为“Email”的属性,模型绑定无法区分这两者。同名的两个字段
我读到[Bind(Prefix = ...
被用来解决这个问题,但是我一直没能看到一个关于如何实现这个的简明例子。
public class BusinessFormViewModel
{
public Business Business { get; set; }
public ContactPerson ContactPerson { get; set; }
public BusinessFromView(Business business, ContactPerson contactPerson)
{
Business = business;
ContactPerson = contactPerson;
}
}
如何使用绑定前缀来解决这个问题?
我相信,如果张贴的表单元素包含名称中包含的前缀,绑定将正确完成。这就是模板帮助器(即EditorFor)如何呈现控件,并且我的嵌套视图模型已被正确绑定。例如,你的情况,你的观点将有表单元素是这样的:
...
<input type="text" name="Business.Email" value="<%=this.Model.Business.Email %>" />
...
<input type="text" name="ContactPerson.Email" value="<%=this.Model.ContactPerson.Email %>" />
...
或者,使用模板助手(在MVC 2):
...
<%= Html.TextBoxFor(m => m.Business.Email) %>
...
<%= Html.TextBoxFor(m => m.ContactPerson.Email) %>
...
和你的控制器将简单地采取BusinessFormViewModel作为参数,如下所示:
public BusinessFromView(BusinessFormViewModel businessForm)
{
Business = businessForm.Business;
ContactPerson = businessForm.ContactPerson;
}
我没有使用MVC 2,这是否意味着我必须为我的所有字段创建输入元素?什么是处理[绑定(前缀= ...? – 2010-04-16 19:16:27
我不熟悉绑定(前缀... 你目前如何创建张贴的表单元素? – Luke 2010-04-16 22:07:04
您的表单是如何构建的?它是如何被绑定的?需要更多信息来准确诊断您的命名问题。 – Jab 2010-04-16 16:09:37