0
我想知道如何保持一個在ASP.NET MVC-4UrlRedirect
:奇怪的重定向行爲
例如,我有這樣的:
/admin/category/add/81/142
但我使用後:
return RedirectToAction("Add", "Category", new RouteValueDictionary
{
{"id", siteid.Value},
{"cid", pid.HasValue ? pid.Value : cid.Value }
});
我得到這個:
/admin/category/add?id=81&cid=142
但我想原來的/admin/category/add/81/142
這裏是我的路由配置:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRouteLowercase(
"Admin_LogOn",
"Admin/{controller}/{action}/",
defaults: new { controller = "Account", action = "LogOn" },
constraints: null
);
context.MapRouteLowercase(
"Admin_Category_List_Add",
"Admin/{controller}/{action}/{id}/{cid}/{pid}",
defaults:
new
{
controller = "Category",
action = "Create",
id = UrlParameter.Optional,
cid = UrlParameter.Optional,
pid = UrlParameter.Optional
},
constraints: null
);
context.MapRouteLowercase(
"Admin_TwoParameters",
"Admin/{controller}/{action}/{id}/{cid}",
defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional, cid = UrlParameter.Optional },
constraints: null
);
context.MapRouteLowercase(
"Admin_default",
"Admin/{controller}/{action}/{id}",
defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional },
constraints: null
);
}
請告訴我,我可以做更多的一般行爲,喜歡實現自定義路由還是什麼? – IamStalker 2013-04-08 09:42:26
不使用自定義路由,您可以使用它將您想要的url格式映射到正確的控制器和方法。 Url.Action已經是一種「普遍行爲」,並且已經將'routevalues'傳遞給它。只有它真的會給你的鍵值對(例如ID = 81)。但是,與我的建議解決方案相比,這是最安全的 - 對於您的問題,這是一個相當好的答案。另一種方法 - 除了Url.Action提供的內容之外,您可以將(動態)對象傳遞給將爲您構建字符串的方法。 – 2013-04-08 09:55:33
感謝您的建議,您的解決方案很好地工作。 – IamStalker 2013-04-08 12:03:31