asp.net-mvc – MVC – 在同一页面上与多个实体进行模型绑定

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC – 在同一页面上与多个实体进行模型绑定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何在我从页面上的多个实体返回信息的场景中使用模型绑定?

我想显示来自两个独立实体的字段组合,即客户地址.我正在为我的模型使用Microsoft的DAAB和自定义业务实体.

有任何想法吗?

解决方法

如果您尝试在回发时绑定到多个模型,则应尝试使用Bind属性并在参数中指定用于每个模型的前缀.在某些情况下 – 您可能无法为模型元素使用单独的前缀 – 您可能会发现使用多个TryUpdateModel和单独的白名单更容易,而不是将模型放在参数中.
public ActionResult Update( [Bind(Prefix="Customer")]Customer customer,[Bind(Prefix="Address")]Address address )
{
   ...
}

这假设您有一个viewmodel,如:

public class CustomerAddressModel
{
    public Customer Customer { get; set; }
    public Address Address { get; set; }
}

并参考它:

<%= Html.TextBox( "Customer.Name" ) %>
...
<%= Html.TextBox( "Address.Street" ) %>

或者,使用TryUpdateModel,

public ActionResult Update( int id )
{
    var customer = db.Customers.Where( c => c.ID == id ).Single();

    var whitelist = new string[] { "name","company",... };
    if (TryUpdateModel( customer,whitelist ))
    {
        var addressWhitelist = new string[] { "street","city",... };
        if (TryUpdateModel( customer.Address,addressWhitelist ))
        {
            ...
        }
    }

}

在这种情况下,您的模型可能只包含您尝试更新的两个不同模型中的字段.

public class CustomerAddressModel
{
    public string Name { get; set; }
    public string Company { get; set; }
    public string Street { get; set; }
    ...
}

猜你在找的asp.Net相关文章