【问题标题】:ASP.net MVC RouteLink and optional routeValuesASP.net MVC RouteLink 和可选的 routeValues
【发布时间】:2009-05-20 10:30:56
【问题描述】:

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

我有

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

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

这 2 个 URL 将是有效的:

/产品/页面

/Products/Page?category=cars

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

我知道我能做到:

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

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

【问题讨论】:

    标签: asp.net-mvc routevalues routelink


    【解决方案1】:

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

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

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

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

    或者这就是你所说的“尴尬的 if 语句”的意思?

    【讨论】:

    • 感谢您提供详细示例。我不知道如果您将空或 null 传递给 routValues,它不会输出值名称。很酷!
    • 很高兴,很高兴我能提供帮助
    【解决方案2】:

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

    【讨论】:

    • 谢谢。也许是因为我不习惯它,或者我只是很笨,但慢慢地我开始理解 asp.net MVC 的约定......虽然它对我来说通常看起来很“神奇”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多