代码之家  ›  专栏  ›  技术社区  ›  dtc

ASP.NET MVC RouteLink和可选的RouteValues

  •  2
  • dtc  · 技术社区  · 15 年前

    我正试图找出如何有条件地设置一个可选的routeValue。

    我有

    <%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex) }) %>
    

    如果访问者单击“类别”,我只显示该类别的产品,但如果没有“类别”,我将显示所有产品。

    这两个URL将有效:

    /产品/页面

    产品/页面?类别=汽车

    RouteLink在我的寻呼机中,所以我想我可以在寻呼机中的链接中通过category参数来保持页面之间的类别。但是,我不确定如何处理没有选择类别的情况与选择类别的情况。

    我知道我能做到:

    <%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=cars }) %>
    

    但是否有可能在不造成尴尬的if语句的情况下处理这两种情况?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Peter    15 年前

    这只是一个想法,但你不能只传递一个空的类别参数吗?

    <%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=(ViewData["CategoryName"]) }) %>
    

    在你的产品控制器中,在你得到页面的地方,检查它是否存在?

    public ActionResult Index(int page, string category)
    {
        ViewData["CategoryName"] = category;
    
        if(!string.IsNullOrEmpty(category)){
            //paging with category
        }else{
            //paging without category
        }
        return View("Create");
    }
    

    或者这就是你所说的“尴尬的如果声明”?

        2
  •  2
  •   Alexander Prokofyev    15 年前

    如果 汽车 变量为空或空字符串,html.routelink方法将不添加 类别 参数自动转到URL。你不需要做额外的检查。

    推荐文章