【发布时间】:2018-07-02 18:13:01
【问题描述】:
我正在尝试设置我的控制器的路线,同时也能够在不输入 Index 的情况下导航索引,这是我尝试过的:
我的路线配置
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
试试#1
// My controller
[Route("panel/admin")]
public class MyController...
// My index action
public IActionResult Index()...
问题:这不起作用,所有操作都可以在panel/admin 访问,所以我收到一条错误消息Multiple actions matched。
即使将我的索引操作的路由设置为Route(""),也不会改变任何内容。
试试#2
// My controller
[Route("panel/admin/[action]")]
public class MyController...
// My index action
[Route("")]
public IActionResult Index()...
这里,索引路由没有变化,它保持panel/admin/Index。
我想要什么
我希望在导航到 panel/admin 时能够访问我的索引操作,并且我还希望我的其他操作仅使用它们的方法名称,例如 panel/admin/UsersList。
完整的控制器
[Route("panel/admin/[action]")]
public class MyController
{
[Route("")]
public IActionResult Index()
{
return View();
}
public IActionResult UsersList()
{
var users = _db.Users.ToList();
return View(users);
}
// Other actions like UsersList
}
谢谢。
【问题讨论】:
-
你试过
[Route("panel/admin/")]吗?还是在 global-app-start 级别设置路由? -
嗯,是的,我两次都试过了。
-
能否也分享你在 Startup.cs 中的路由配置(或者如果你在 Startup.cs 中没有路由配置,就这么说吧)?
-
@Rainbolt 我加了。
-
您可能不必在控制器级别设置路由。相反,您只需将它们应用于操作方法。动作路由基本上总是附加到控制器路由。
标签: c# asp.net-core .net-core asp.net-core-routing