場景:我在ASP.NET MVC 5站點中有一個Forms區域。屬性路由不在區域工作
我在嘗試重定向到使用新的屬性路由功能定義的自定義路由的詳細操作。
的RedirectToAction:
return RedirectToAction("Details", new { slug });
我重定向到行動:
[HttpGet]
[Route("forms/{slug}")]
public ActionResult Details(string slug)
{
var form = FormRepository.Get(slug);
...
return View(model);
}
我希望重定向到http://localhost/forms/my-slug
而是應用程序被重定向我http://localhost/Forms/Details?slug=my-slug
。
這意味着屬性路由不起作用。
這怎麼解決?
我已經添加了routes.MapMvcAttributeRoutes();行我RouteConfig:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
而且這裏是我的Application_Start():
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
SWEET!花了將近4個小時試圖找出MVC 5.1之後的這個愚蠢的改變之後,您的解決方案一勞永逸地解決了我的問題。 – Korayem
我很高興我的問題+答案已經幫助了很多人:-) –
這對我有效..我放棄了區域路線屬性,因爲它根本行不通。但是,在Route.MapMvcAttributeRoutes()之後移動AreaRegistration.RegisterAllAreas()之後,它神奇地做了這個訣竅! –