的两个列表我有一个看法强类型,以项目类。在我的控制器中,我需要发送两个不同的列表。有没有更容易的方法来做到这一点,而不是创建一个具有两个List的新类。Asp.Net MVC - 强类型查看同类型
什么我最终要做的是对我的主页10个项目按日期排序,以及10项依热门程度排序。
我做了什么
其实我去与这两个答案的组合。我强烈地将我的视图键入到用两个列表创建的新类中。然后我强烈地将两个部分视图键入到每个列表中。可能看起来过度杀伤力,但我喜欢它的结果。
的两个列表我有一个看法强类型,以项目类。在我的控制器中,我需要发送两个不同的列表。有没有更容易的方法来做到这一点,而不是创建一个具有两个List的新类。Asp.Net MVC - 强类型查看同类型
什么我最终要做的是对我的主页10个项目按日期排序,以及10项依热门程度排序。
我做了什么
其实我去与这两个答案的组合。我强烈地将我的视图键入到用两个列表创建的新类中。然后我强烈地将两个部分视图键入到每个列表中。可能看起来过度杀伤力,但我喜欢它的结果。
“创建具有两个列表一个新的类”是要走的路。它被称为视图模型,一旦你拥抱它,强类型视图的力量就真正打开了。它可以是这个简单:
public class IndexViewModel
{
public List<Item> Newest { get; set; }
public List<Item> Popular { get; set; }
}
这就是约翰建议,或不含强类型的视图,并将它们添加到的ViewData:
ViewData["Newest"] = Newest;
ViewData["Popular"] = Popular
另一种选择是强类型的局部视图。
您应该既包括列出专门用于视图的模式。
通常在我已经完成的小MVC中,我为每个视图都创建了一个模型,即使它们只传递了数据或业务层提供的相同数据,以保持两个部分之间的分隔非常严格。这种设置稍微有点多,在很多简单的情况下都不需要,但它确实使我的观点更清晰。
一般有两种哲学这一点。首先是采取John Sheehan的方法。您可以使用这两个列表创建自定义视图模型,并将其传递给您的强类型视图。
二是要考虑名单“辅助”数据,并把他们的ViewData像jeef3说。但是,当您呈现列表时,您使用强类型部分。由于我的意思是在你的主视图中,你可以调用RenderPartial(...),但是传递你使用的视图数据键。
而且你的部分看起来像:
<%@ ViewUserControl Inherits="System.Web.Mvc.ViewUserControl<List<Item>>" %>
...
这给你强类型从内您的部分访问该视图的数据。