我有一个看法强类型,以项目类。在我的控制,我需要发送两个不同的列表。是否有更简单的方法比具有两个列表创建一个新类来做到这一点其他的。

什么我最终要做的是对我的主页10个项目按日期排序,以及10项依热门程度排序。

<强>我所做

其实我去与这两个答案的组合。我强类型我查看到我跟两个列表创建新类。然后我强类型的列表中的每一个两个部分的意见。似乎有点小题大做,但我喜欢它是如何横空出世。

有帮助吗?

解决方案

“创建具有两个列表一个新的类”是要走的路。这就是所谓的视图模型,一旦你接受它的强类型视图的动力真的打开了。它可以是这个简单的:

public class IndexViewModel 
{
    public List<Item> Newest { get; set; }
    public List<Item> Popular { get; set; }
}

其他提示

有两种一般理念此。首先是采取的办法约翰·希恩stanted。您创建两个列表的自定义视图模型,并传递给你的强类型视图。

第二是要考虑的列表为“辅助”数据,并把它们在ViewData的像jeef3说明。但是,当渲染列表,你可以使用强类型的部分。

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

我的意思是在你的主视图,你会打电话的RenderPartial(...),但通过在你使用的视图的数据项。

  

和你的部分看起来像:

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

这让你在你的偏强类型从访问该视图的数据。

这就是约翰建议,或不含强类型的视图,并将它们添加到的ViewData:

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

另一种选择是强类型部分视图。

您应该包括两个列表专门为视图的模型。

通常在小MVC我已经做了,我已经做了,即使他们只是沿着这是担任了由数据或业务层只是为了让这两个部分很严格的分离相同的数据传递的每个视图的模型。这种设置是多一点的工作,在很多简单的情况下并不需要,但它确实在我看来,让事情变得更清洁。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top