ASP.net MVC RouteLink和可选的routeValues

时间:2009-05-20 10:30:56

标签: asp.net-mvc routevalues routelink

我正在试图弄清楚如何有条件地设置一个可选的routeValue。

我有

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

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

这两个网址有效:

/ Products / Page

/产品/页?类别=汽车

RouteLink在我的寻呼机中,所以我想我可以以某种方式传递寻呼机链接中的类别参数,以便在页面之间保持类别。但是我不确定如何处理没有选择类别的情况与选择类别的情况。

我知道我可以这样做:

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

但是可以在不创建一些尴尬的if语句的情况下处理这两种情况吗?

2 个答案:

答案 0 :(得分:3)

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

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

在您获得该页面的productcontroller中,只需检查它是否存在?

public ActionResult Index(int page, string category)
{
    ViewData["CategoryName"] = category;

    if(!string.IsNullOrEmpty(category)){
        //paging with category
    }else{
        //paging without category
    }
    return View("Create");
}

或者你的意思是“尴尬的陈述”?

答案 1 :(得分:2)

如果 cars 变量为null或空字符串,则Html.RouteLink方法不会自动将 category 参数添加到URL。您无需进行额外检查。