所以我有這樣的控制器操作:ASP.NET MVC:路由問題
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)
如果我使用這個,我的網址是:http://localhost:50033/Search/Categories?typecode=16860
但如果我將typecode
的所有發生次數更改爲id
,它的工作原理和我得到這個網址: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
action:
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)
它的工作原理!所以我取代的一切,沒有更多的路線,我只是用id
取代3 typecode
發生。
這是爲什麼?任何人都可以幫助我嗎?提前致謝!
你想擁有哪個網址'/ Categories?typecode = {id}'或'/ Categories/{id}'? – James
看看http://blogs.msdn.com/b/simonince/archive/2011/02/02/asp-net-mvc-3-optional-parameter-routing-issue.aspx –
@James我想要'/類別/ {typecode}' – avb