ActionLink 忽略属性路由设置
ActionLink ignoring attribute routing settings
我有一个 TextObject
控制器,它应该由“~/umt/text/{action}/{id?}
”访问,正如在使用属性路由的控制器中定义的那样,但是操作 link:
@Html.ActionLink("Index", "Index", "TextObject")
忽略属性路由并使用常规路由定义,生成 ~/TextObject/
而不是所需的 ~/umt/text/
TextObjectController:
[Authorize]
[RouteArea("umt")]
[RoutePrefix("text")]
[Route("{action=index}/{id?}")]
public class TextObjectController : Controller
{
.....
public async Task<ActionResult> Index()
{
return View(await db.TextObjects.ToListAsync());
}
.....
}
我的路线配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Enable Attribute Routing
routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
控制器是否需要任何额外的配置才能使操作 link 起作用或它不适用于属性路由?
我想保持简单,它会正确路由直接通过 url,但 ActionLink
助手似乎不喜欢它。
我看不到你指定了默认区域 RouteConfig
所以你的操作 link 应该是这样的:
@Html.ActionLink("TextObject", "Index", "Index", new { area = "umt" }, null)
我有一个 TextObject
控制器,它应该由“~/umt/text/{action}/{id?}
”访问,正如在使用属性路由的控制器中定义的那样,但是操作 link:
@Html.ActionLink("Index", "Index", "TextObject")
忽略属性路由并使用常规路由定义,生成 ~/TextObject/
而不是所需的 ~/umt/text/
TextObjectController:
[Authorize]
[RouteArea("umt")]
[RoutePrefix("text")]
[Route("{action=index}/{id?}")]
public class TextObjectController : Controller
{
.....
public async Task<ActionResult> Index()
{
return View(await db.TextObjects.ToListAsync());
}
.....
}
我的路线配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Enable Attribute Routing
routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
控制器是否需要任何额外的配置才能使操作 link 起作用或它不适用于属性路由?
我想保持简单,它会正确路由直接通过 url,但 ActionLink
助手似乎不喜欢它。
我看不到你指定了默认区域 RouteConfig
所以你的操作 link 应该是这样的:
@Html.ActionLink("TextObject", "Index", "Index", new { area = "umt" }, null)