C# 同名的两个字段

C# 同名的两个字段,c#,.net,asp.net-mvc,model-binding,C#,.net,Asp.net Mvc,Model Binding,我有一个ViewModel类来封装“个人”和“业务”模型。我的问题是,这两个模型都有一个名为“Email”的属性,而模型绑定无法区分这两个属性 我读到[Bind(Prefix=…用于解决此问题,但我还没有看到一个关于如何实现此目标的简明示例 public class BusinessFormViewModel { public Business Business { get; set; } public ContactPerson ContactPerson { get; set

我有一个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)就是这样做的渲染控件,并正确绑定嵌套的viewmodels。例如,在您的情况下,您的视图将具有如下形式的表单元素:

...
<input type="text" name="Business.Email" value="<%=this.Model.Business.Email %>" />
...
<input type="text" name="ContactPerson.Email" value="<%=this.Model.ContactPerson.Email %>" />
...

您的表单是如何构建的?它是如何绑定的?需要更多的信息来准确诊断您的命名问题。我没有使用MVC 2,那么这是否意味着我必须为所有字段创建输入元素?与[Bind(Prefix=…]有什么关系?我不熟悉Bind(前缀…您当前如何创建发布的表单元素?
...
<%= Html.TextBoxFor(m => m.Business.Email) %>
...
<%= Html.TextBoxFor(m => m.ContactPerson.Email) %>
...
public BusinessFromView(BusinessFormViewModel businessForm)
{
    Business = businessForm.Business;
    ContactPerson = businessForm.ContactPerson;
}