【问题标题】:How to call the previous querystring parameter in .aspx如何在.aspx中调用上一个查询字符串参数
【发布时间】:2010-05-07 11:26:20
【问题描述】:

假设我有一个带有 pageNumber 参数和一个类别参数的 ActionResult 方法。

用户应该能够将他正在浏览的类别设置为该类别第一页的 ActionLink。但是,如果我有另一个 ActionLink 可以转到下一页,则类别参数将恢复为默认值。

如何将类别参数设置为与上一页相同。

编辑:原本应该是评论,但变大了

对不起,我看到我的问题不够清楚,所以匆忙写下。我有点尝试做你正在做的事情,但我不想将类别设置为 1,而是将其设置为加载此页面时的参数。

场景:我正在浏览网站并单击具有此操作链接的“鞋子”(类别 ID = 3) <%=Html.ActionLink("Shoes", "Index", new { categoryID = 3 }) %>

我得到了鞋子的第一页,然后我不想跳到具有操作链接的下一页 <%=Html.ActionLink(">>>", "Index", new { page = model.currentPage + 1 }) %> 我不能在此 actionlink 代码中包含 categoryID 参数,因为在我的通用视图代码中,我当然不知道哪个类别处于活动状态。

所以当我点击它时,它会再次切换到默认类别。

【问题讨论】:

    标签: asp.net-mvc parameters query-string


    【解决方案1】:

    听起来您需要将类别 ID 添加为模型对象的属性,以便在视图中可用。所以你的视图代码看起来像这样:

    <%=Html.ActionLink(">>>", "Index", new { categoryId = model.categoryId, page = model.currentPage + 1 }) %>
    

    【讨论】:

    • 我发现我的问题不够清楚,所以我补充了一点。谢谢。
    【解决方案2】:

    我遇到的问题是在调用之间存储参数,因为 Page 参数与 Category 参数无关,并且总是会单独添加,然后我丢失了另一个的值。例如这里:

        public ActionResult Products(int? page, int? category)
        {
            var result = repo.GetAllProductsByCategory(category);
    
            result.Skip(PAGE_SIZE * (page -1)).Take(PAGE_SIZE)
    
            return View(result);
        }
    

    在.aspx中的伪代码

    actionlink ("Shoes", "Products", new { category = 2 }) actionlink ("Pants", "Products", new { category = 3 }) actionlink ("Hats", "Products", new { category = 4 })

    "foreach 代码显示第一页"

    actionlink ("下一页", Products, new { page = lala.nextPage })

    在这里,当我单击下一页时,选择的类别会丢失,因为它只抛出页码参数。

    我自己最终使用 Ajax 和 partialViews 来解决这个问题,但我也想出了另一种可能可行的简单方法。只需将控制器中选择的最后一个类别存储为变量。像这样:

        public ActionResult Products(int? page, int? category)
        {
            m_category = category;
    
            var result = repo.GetAllProductsByCategory(m_category);
    
            result.Skip(PAGE_SIZE * (page -1)).Take(PAGE_SIZE)
    
            return View(result);
        }
    

    这样我们就不会忘记用户在翻页时浏览的类别。它仍然需要一些实现,例如,如果用户正在浏览所有产品而不是特定类别(可能是 actionlink where new category = null),如何再次将其设为 null。

    【讨论】:

    • 我也可以将它存储在 ViewData 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2019-08-21
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多