我有一个看起来像这样的电话:
<%= 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 = "" }
);
任何线索都会受到赞赏!
答案 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是否设置正确。更多的信息/代码可能是有希望的。
也很抱歉没有解决你问题的路由部分。