我有一个TextObject
控制器,它可以被" ~/umt/text/{action}/{id?}
"访问,如控制器中使用属性路由定义的那样,但是动作链接:
@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 }
);
}
}
控制器上是否需要任何其他配置才能使操作链接正常工作,或者它是否与属性路由无关?
我想保持简单,并且它正确地直接通过网址路由,但是ActionLink
帮助器似乎不喜欢它。
答案 0 :(得分:0)
我看不到您在RouteConfig
指定了默认区域,因此您的操作链接应如下所示:
@Html.ActionLink("TextObject", "Index", "Index", new { area = "umt" }, null)