是否可以让部分视图继承多个模型?我有三个模型(联系人,客户端,供应商)都有地址信息(地址)。为了DRY,我将地址信息拉入了自己的模型Addresses。我创建了地址的部分创建/更新视图以及在其他三个模型的创建/更新视图中呈现的内容。
答案 0 :(得分:2)
您可以使用DRY并拥有三个视图(联系人,客户端,供应商),而不是使用复合视图模型。如果您担心在显示地址信息时重复自己,只需为该类型制作显示模板即可。这样,您可以在自己的视图中为每个联系人,客户端和供应商写出所有特定信息,然后直接进入:
<%= Html.DisplayFor(m => m.Address) %>
现在你仍在干,同时仍然支持单一责任原则。
有关显示和修改模板的更多信息,您可以查看其上的Brad Wilson或Phil 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; }
}
我们经常使用这种方法在需要时将更多元素添加到视图中,并且我发现在需要时使用这些自定义视图模型没有不好的做法。
希望有所帮助!