Asp.net mvc 如何在.aspx中调用上一个querystring参数

Asp.net mvc 如何在.aspx中调用上一个querystring参数,asp.net-mvc,parameters,query-string,Asp.net Mvc,Parameters,Query String,假设我有一个ActionResult方法,它有一个pageNumber参数和一个category参数 用户应该能够设置他正在浏览的类别,这将是指向该类别第一页的ActionLink。但是,如果我有另一个ActionLink,我将转到下一页,category参数将返回默认值 如何将category参数设置为与上一页相同 编辑:原本应该是一个评论,但规模越来越大 对不起,我看我的问题不太清楚,写得有点匆忙。我有点想做你正在做的事情,但不是将类别设置为1,而是将其设置为加载此页面时的参数 场景:我正在

假设我有一个ActionResult方法,它有一个pageNumber参数和一个category参数

用户应该能够设置他正在浏览的类别,这将是指向该类别第一页的ActionLink。但是,如果我有另一个ActionLink,我将转到下一页,category参数将返回默认值

如何将category参数设置为与上一页相同

编辑:原本应该是一个评论,但规模越来越大

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

场景:我正在浏览网站并单击shoes categoryID=3,其中有此actionlink

我得到了鞋子的第一页,然后我不想跳到下一页有一个actionlink 我不能在这个actionlink代码中包含categoryID参数,因为在我的通用视图代码中,我当然不知道哪个类别是活动的


因此,当我单击它时,它会再次切换到默认类别。

听起来您需要添加类别id作为模型对象的属性,以便在视图中可用。因此,您的视图代码如下所示:

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

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

在伪代码中的.aspx中

actionlink鞋,产品,新{category=2} actionlink裤子,产品,新{category=3} actionlink帽子,产品,新{category=4}

foreach代码显示第一页

actionlink下一页,产品,新{page=lala.nextPage}

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

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


这样我们就不会忘记用户在翻页时浏览的类别。它仍然需要一些实现,例如,如果用户浏览的是所有产品,而不是某个类别actionlink,其中new category=null,那么如何再次将其设置为null。

我发现我的问题不够清楚,所以我添加了一点。谢谢。我也可以将它存储在ViewData中。
    public ActionResult Products(int? page, int? category)
    {
        var result = repo.GetAllProductsByCategory(category);

        result.Skip(PAGE_SIZE * (page -1)).Take(PAGE_SIZE)

        return View(result);
    }
    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);
    }