1

我有一个看起来像这样的电话:

<%= Html.RouteLink(item.displayName, "DisplayCategory", new { category = Html.Encode(item.displayName), subcat = item.searchName }) %>

我得到的 html 看起来像这样:

http://localhost:1485/Home/ShowCategory/Electronics%20&%20Photography?subcat=electronics-photo

为什么 URL 以 "?subcat=electronics-photo" 而不是 "/electronics-photo" 结尾?它与路由定义有某种关系吗?

   routes.MapRoute(
        "DisplayCategory",
        "Home/ShowCategory/{category}/{tags}",
        new { controller = "Home", action = "ShowCategory", category = "", tags = "" }
    );

任何线索将不胜感激!

4

2 回答 2

2

如果查询字符串与路由定义中的参数之一不匹配,则 MVC 路由会在查询字符串上添加。尝试将 subcat 添加到您的路线:

routes.MapRoute(
        "DisplayCategory",
        "Home/ShowCategory/{category}/{tags}/{subcat}",
        new { controller = "Home", action = "ShowCategory", category = "", tags = "", subcat = "" }
    );
于 2010-01-19T23:18:55.733 回答
0

我只是在尝试,但看起来您正在使用 MVC 框架。

其中每个控制器都有一个动作,在本例中为 ShowCategory,默认情况下它们采用查询字符串,在本例中为类别。MVC 有目的地抽象了文件夹结构。我相信 MVC 应用程序将始终具有这种类型和深度 domain.ext/Controller/Action?queryString 的 URL。

我认为问题可能是 subcat 是否设置正确。更多信息/代码可能是有希望的。

也很抱歉没有解决您问题的路由部分。

于 2009-03-17T18:27:43.707 回答