所以我有这个控制器动作:
public ActionResult Categories(int typecode)
{
// code removed
}
这条路线:
routes.MapRoute(null,
"{controller}/{action}/{typecode}",
new { controller = "Search", action = "Categories", }
);
和这个链接来调用路线:
@Html.ActionLink("Ga", "Categories", "Search", new { typecode = 16860 }, null)
如果我使用它,我的 URL 是:http://localhost:50033/Search/Categories?typecode=16860
但是如果我将所有出现的typecode
to更改为id
,它可以工作并且我得到这个 URL:http://localhost:50033/Search/Categories/16860
因此,使用 typecode 我的路线不起作用,而使用 id 则可以。我究竟做错了什么?谢谢!
编辑:
我想我不够清楚,但在我的Global.asax.cs
文件中我有这个:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("TypeCode",
"Search/Categories/{typecode}",
new { controller = "Search", action = "Categories" }
);
}
所以这只是一条路线,而不是SearchController
我有这个Categories
动作:
public ActionResult Categories(int typecode)
{
// Irrelevant code removed
}
所以参数和路由参数一模一样,那么我有这个链接:
@Html.ActionLink("Ga", "Categories", "Search", new { typecode = 16860 }, null)
也完全使用路由参数,但生成的链接仍然是:http://localhost:50033/Search/Categories?typecode=16860
所以这不是我想要的。
现在,当我替换所有类型代码出现时,如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("TypeCode",
"Search/Categories/{id}",
new { controller = "Search", action = "Categories" }
);
}
public ActionResult Categories(int id)
{
// irrelevant code removed
}
@Html.ActionLink("Ga", "Categories", "Search", new { id = 16860 }, null)
有用!所以我替换了所有东西,没有更多的路线,我只是typecode
用id
.
为什么是这样?任何人都可以帮我解决这个问题吗?提前致谢!