视图将多个结果集传递给ASP.NETMVC中的控制器?所以我有一个这样的控制器设置:usingNonStockSystem.Models;namespaceNonStockSystem.Controllers{[Authorize(Users="DOMAIN\rburke")]publicclassAdminController:Controller{privateNonStockSystemDataContextdb=newNonStockSystemDataContext();publicActionResultIndex(){varenumProducts=frompindb.Productsselectp;ViewData["标题"]="管理";返回视图(enumProducts.ToList());}}}Admincontroller上的Indexview只列出了system,并允许我们点击一??个产品来查看/编辑/删除它。这真的很简单。但是,每个产品都有一个CategoryID,它告诉我们哪个类别存储在单独的表中。(非常简化的)当前视图如下所示:(Edit-删除)目前这很好,因为在我开发和测试它时系统中只有10或15个产品,但是一旦我部署它就会有大约。数据库中有300种产品。我可以将它们全部显示在一个页面上,但我想使用(onehref="#category")链接,就像维基百科在页面顶部所做的那样,这样我就可以得到一个类别列表,当你点击一个类别时它会将您带到页面的适当部分。因此,我对这种情况的看法如下:(Edit-Delete)}%>首先,我不完全确定这是“正确”的方式,所以我绝对愿意以不同的方式做事,但如果是这样的话,那么我需要知道如何(1)将两个结果集传递给视图(产品和类别)和(2)在每个foreach循环中遍历产品子集,只获取相应类别中的结果集?干杯!你有两个选择。首先,您可以创建一个只包含Products和Categories集合的只读模型。其次,您可以在ViewData中传递一个或两个模型,而不是将其设置为页面的模型。公共类CategoryProduct{publicIEnumerableProducts{get;放;}公共IEnumerable类别{get;放;}}....returnView(newCategoryProduct{Products=products,Categories=categories});这允许您使用强类型视图模型并获得智能感知,但需要额外的类来维护。或(一个选项)ViewData["categories"]=categories;返回视图(产品);这需要为类别转换ViewData,以便您可以使用强类型。本例中的产品是模型。您可以交换它们或将它们放在ViewData中。就你的方法而言,我很好。另一种方法是对其进行分页,以便并非所有类别都存在于同一页面上以保持页面长度不变。您仍然会在顶部列出所有类别,但有些类别可能需要回发才能获得新的数据页。这可能有点复杂,但会在产品数量增加时加快加载时间。另一种方法是使用钻取。首先选择一个类别,然后只显示该类别中的产品。这些也可以被分页。我认为这更像是Amazon、Buy.com等所做的。它们还允许进行额外的过滤(类别只是顶级)。以上就是C#学习教程:在ASP.NETMVC中将多个结果集传递给控制器??的视图?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: