我真的希望你能帮助我,因为我现在正在努力解决这个问题。我正在编写一个网络应用程序,可以授予用户访问在线商店的优惠券代码。
我使用的是:VB.net,实体框架,MVC(MVVM),MS SQL Server。
这是我关于SO的第一篇文章,我的母语不是英语,我也不是一个非常先进的爱好程序员,请接受我的道歉,以防万一已经找到了一个我无法找到的合适答案不知道究竟要搜索什么:/
我有几个表通过关系表与多对多关系链接:tblMerchantsInfo,tblProductsInfo,tblCouponsInfo,tblRelations
我已经设置了我的View以期望ViewModel包含我的View的所有必要信息尽可能有用,但我只是想不通知如何将tbl.ProductsInfo.prodCategoryName的列表(?)传递给我通过ViewBag或ViewData查看。
从我的ViewModel中我可以获得数据库中存在的所有类别的列表,但是,此列表包含我想避免的重复项,以便我可以为每个不同的类别设置Actionlink。
查看:
<%@ Page Inherits="System.Web.Mvc.ViewPage(Of Rabattverwaltung.CouponInfoViewModelList)" Language="VB" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title>Index</title>
<!--[more stuff going on here]-->
</head>
<body>
Filter by categories:
<%For Each cat In Model.CouponInfoViewModel%>
<a href="/SearchCoupons/Index/?Category=<%= cat.ProductCategory%>"> <%= cat.ProductCategory%>
</a>
<%Next%>
</body>
会给我一份所有类别的列表,包括重复项。这就是为什么我想使用ViewBag或ViewData将IEnumerable传递给View。
我(尝试?)在我的控制器中创建它:
Dim CatList As New List(Of IEnumerable)
For Each DistinctCat In (From prod In database.tblProducts Select prod)
CatList .Add(DistinctCat .prodCategory.Distinct)
Next
ViewBag.AllCategoriesList = catList
这会导致错误“值不能为空”。当我删除“distinct”术语时,它会创建List并将其传递给我的视图。我无法弄清楚如何遍历该列表并仅查找不同的项目:/
任何建议都将受到高度赞赏。
编辑:如何从我的viewmodel中获取不同的类别,而不是通过Viewbag传递列表?也许这是一种更好的方式,我想:/
答案 0 :(得分:0)
我刚刚找到了解决我问题的方法:'D DAYUMN,这个问题是我的错误O.Ô
以防万一未来的菜鸟会遇到同样的问题:
在我的控制器中我有这个:
Dim categoryList As New List(Of IEnumerable)
For Each DistinctCategory In (From prod In database.tblProducts Select prod.prodcategor< Distinct)
categoryList .Add(DistinctCategor)
Next
ViewBag.allCategoriesList = categoryList
在我的观点中,我有:
<% For Each cat In ViewBag.allCategoriesList %>
<a href="/Index/?category=<%= cat%>"> <%=cat%></a>
<%Next%>
现在,我可以从我的视图中选择此链接以传回类别过滤器,并仅选择此特定类别中的产品。 我无法弄清楚如何从我的ViewModel中获取这些独特的值,因此,我很高兴看到任何不使用ViewBag(Y)的建议
快乐