ASP.NET MVC Generic Partial

时间:2010-05-14 15:28:44

标签: asp.net-mvc partial-views

是否可以让部分视图继承多个模型?我有三个模型(联系人,客户端,供应商)都有地址信息(地址)。为了DRY,我将地址信息拉入了自己的模型Addresses。我创建了地址的部分创建/更新视图以及在其他三个模型的创建/更新视图中呈现的内容。

3 个答案:

答案 0 :(得分:2)

您可以使用DRY并拥有三个视图(联系人,客户端,供应商),而不是使用复合视图模型。如果您担心在显示地址信息时重复自己,只需为该类型制作显示模板即可。这样,您可以在自己的视图中为每个联系人,客户端和供应商写出所有特定信息,然后直接进入:

<%= Html.DisplayFor(m => m.Address) %>

现在你仍在干,同时仍然支持单一责任原则。

有关显示和修改模板的更多信息,您可以查看其上的Brad WilsonPhil Haack个帖子。

答案 1 :(得分:0)

如何创建包含所有三个模型(联系人,客户端,供应商)的新模型。然后将这个新模型传递给你的部分。从那里,您可以访问新创建的模型中的所有三个模型。

答案 2 :(得分:0)

我认为这样做的唯一方法是使用复合视图模型(这不一定是坏事),如下所示:

public class MyControllerActionViewModel
{
    public IList<Contact> Contacts { get; set; }
    public IList<Client> Clients { get; set; }
    public IList<Vendor> Vendors { get; set; }
}

我们经常使用这种方法在需要时将更多元素添加到视图中,并且我发现在需要时使用这些自定义视图模型没有不好的做法。

希望有所帮助!