ActionLink忽略属性路由设置

时间:2015-11-19 06:16:37

标签: asp.net asp.net-mvc asp.net-mvc-routing

我有一个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帮助器似乎不喜欢它。

1 个答案:

答案 0 :(得分:0)

我看不到您在RouteConfig指定了默认区域,因此您的操作链接应如下所示:

@Html.ActionLink("TextObject", "Index", "Index", new { area = "umt" }, null)