是否可以使用[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{}
答案 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
。