【问题标题】:How to pass an IEnumerable or queryable list of properties from Controller to View如何将 IEnumerable 或可查询的属性列表从 Controller 传递到 View
【发布时间】: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


【解决方案1】:

我刚刚找到了解决问题的方法:'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) 的建议

开心

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多