Html.Routelink输出 - ASP.NET C#MVC

时间:2009-03-17 17:42:55

标签: c# asp.net-mvc asp.net-mvc-routing

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

<%= 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

为什么网址以“?subcat = electronics-photo”而不是“/ electronics-photo”结尾?它与路线定义有什么关系吗?

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

任何线索都会受到赞赏!

2 个答案:

答案 0 :(得分:2)

如果MVC路由无法匹配路由定义中的某个参数,则会对查询字符串进行处理。尝试将subcat添加到您的路线:

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

答案 1 :(得分:0)

我只是采取刺,但看起来你正在使用MVC框架。

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

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

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