Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Asp.NETMVC-具有两个相同类型列表的强类型视图_Asp.net Mvc_Strongly Typed View - Fatal编程技术网

Asp.net mvc Asp.NETMVC-具有两个相同类型列表的强类型视图

Asp.net mvc Asp.NETMVC-具有两个相同类型列表的强类型视图,asp.net-mvc,strongly-typed-view,Asp.net Mvc,Strongly Typed View,我有一个强类型为Item类的视图。在我的控制器中,我需要发送两个不同的列表。除了创建一个包含两个列表的新类之外,还有更简单的方法吗 我最终要做的是在我的主页上按日期排序10个项目,按人气排序10个项目 我所做的 事实上,我结合了两个答案。我用两个列表强式输入了我对新创建的类的视图。然后,我将两个局部视图强输入到每个列表中。可能看起来有些过分,但我喜欢它的结果。“创建一个包含两个列表的新类”是一个不错的选择。它被称为视图模型,一旦你接受了它,强类型视图的力量就真正打开了。可以这么简单: publi

我有一个强类型为Item类的视图。在我的控制器中,我需要发送两个不同的列表。除了创建一个包含两个列表的新类之外,还有更简单的方法吗

我最终要做的是在我的主页上按日期排序10个项目,按人气排序10个项目

我所做的

事实上,我结合了两个答案。我用两个列表强式输入了我对新创建的类的视图。然后,我将两个局部视图强输入到每个列表中。可能看起来有些过分,但我喜欢它的结果。

“创建一个包含两个列表的新类”是一个不错的选择。它被称为视图模型,一旦你接受了它,强类型视图的力量就真正打开了。可以这么简单:

public class IndexViewModel 
{
    public List<Item> Newest { get; set; }
    public List<Item> Popular { get; set; }
}
公共类索引模型
{
公共列表{get;set;}
公共列表流行{get;set;}
}

这是John建议的,或者不使用强类型视图并将其添加到ViewData中:

ViewData["Newest"] = Newest;
ViewData["Popular"] = Popular

另一个选项是强类型局部视图。

您应该创建一个模型,其中包含两个视图专用列表


通常在我完成的小MVC中,我为每个视图创建了一个模型,即使它们只是传递数据或业务层提供的相同数据,只是为了保持两部分之间的严格分离。这种设置需要更多的工作,在许多简单的情况下不需要,但在我看来,它确实可以让事情变得更干净。

有两种基本原理。首先是采取约翰·希恩·斯坦德的方法。使用这两个列表创建自定义视图模型,并将其传递给强类型视图

第二种方法是把列表看作是“辅助”的数据,并把它们放在像JEFE3那样的视图数据中。但是,在呈现列表时,使用强类型的分部

ViewData["Newest"] = Newest;
ViewData["Popular"] = Popular
我的意思是,在主视图中,您可以调用RenderPartial(…),但要传入您使用的视图数据键

而你的部分答案是:

<%@ ViewUserControl Inherits="System.Web.Mvc.ViewUserControl<List<Item>>" %>
...

...
这使您能够从局部视图中对该视图数据进行强类型访问