代码之家  ›  专栏  ›  技术社区  ›  gnome

ASP.NET MVC通用部分

  •  0
  • gnome  · 技术社区  · 16 年前

    部分视图是否可以继承多个模型?我有三种型号(联系人、客户、供应商),都有地址信息(地址)。为了保持干燥,我把地址信息提取到它自己的模型,地址中。我创建了一个地址的部分创建/更新视图,以及在其他三个模型的创建/更新视图中呈现它的内容。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Steven Hook    16 年前

    与使用复合视图模型不同的是,您仍然可以保持干燥状态并拥有三个视图(联系人、客户机、供应商)。如果您担心在显示地址信息时重复自己,只需为该类型制作一个显示模板。这样,您就可以在各自的视图中写出每个联系人、客户和供应商的所有特定信息,并只需登录:

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

    现在你已经干了,但仍然支持单一责任原则。

    有关显示和编辑模板的更多信息,请查看 Brad Wilson Phil Haack 贴在上面。

        2
  •  0
  •   Gabe    16 年前

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

        3
  •  0
  •   Terry_Brown    16 年前

    我认为唯一能做到这一点的方法是使用复合视图模型(这不一定是一件坏事),因此类似于:

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

    我们经常使用这种方法在需要时向视图中引入更多的元素,并且在需要时使用这些自定义视图模型并没有看到任何不好的实践。

    希望有帮助!