【发布时间】:2016-02-05 18:08:05
【问题描述】:
我真的希望你能帮助我,因为我已经为此问题苦苦挣扎了好几天。我目前正在编写一个 Web 应用程序,该应用程序将授予用户访问在线商店优惠券代码的权限。
我使用的是:VB.net、Entity Framework、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
这会导致错误“值不能为空。”。当我删除“不同”术语时,它会创建列表并将其传递给我的视图。我无法弄清楚如何遍历该列表并仅找到不同的项目:/
任何建议都将受到高度赞赏。
编辑:如何从视图模型中获取不同的类别,而不是通过 Viewbag 传递列表?也许这是一个更好的方法,我猜:/
【问题讨论】:
-
如果您已经解决了您的问题,请添加您自己的答案并接受它以关闭它(并从您的问题中删除编辑)
-
最初的问题仍然存在:如何在不通过 ViewBag 将列表传递给我的视图的情况下从我的(继承的)ViewModel 中获取不同的值。
标签: asp.net-mvc vb.net mvvm ienumerable viewbag