asp.net-mvc – 属性路由不工作在区域
|
场景:我有一个窗体区域在我的ASP.NET MVC 5网站。 我试图重定向到详细信息操作,它使用使用新的属性路由功能定义的自定义路由。 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);
}
解决方法您可能将基于惯例的路由与属性路由组合,并且您应该在映射属性路由后注册您的区域。线 AreaRegistration.RegisterAllAreas(); 应该调用AFTER这行: routes.MapMvcAttributeRoutes(); 解释(从http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#route-areas):
当您创建一个空白的asp.net mvc网站,添加一个区域并开始使用属性路由,你会遇到这个问题,因为在Visual Studio中的“添加区域”操作添加RegisterAllAreas调用在您的Application_Start,在路由配置之前。 替代解决方案 也许你不打算继续使用基于约定的路由,并且更喜欢只使用属性路由。在这种情况下,您可以只删除FormsAreaRegistration.cs文件。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
