在asp.net core

时间:2016-08-22 15:24:12

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

是否可以使用[controller]参数来引用路径中的其他控制器?我有一个控制器,我想根据另一个控制器的路线进行更改。

示例:

控制器1:

[Route("[controller]")]
public class Controller1:Controller{}

控制器2:

[Route("[controller1]/user/[controller]")]//how can I make this route refer to controller1?
public class Controller2:Controller{}

1 个答案:

答案 0 :(得分:0)

不,它不可能让[controller]绑定到其他控制器名称。它总是指路由器已经选择的控制器。

[controller]模板实际上并不匹配您现在拥有的任何示例。它尝试匹配模式<Name>Controller,其中<Name>是路由中的标记:

[Route("[controller]")]
public class TestController : Controller { }

将匹配路线/test。 (Routing文档中有更多详细信息。)

如果您想为您的路线添加任意名称前缀,您可以对它们进行硬编码:

[Route("other/user/[controller]")]
public class TestController : Controller { }

这将匹配/other/test

如果您不想对字符串进行硬编码,我建议您使用常量:

public const string OtherRoute = "other";

[Route(OtherRoute + "/[controller]")]
public class TestController : Controller { }

这也将匹配/other/test