【问题标题】:Changing default action doesn't work for ASP.NET Core 2更改默认操作不适用于 ASP.NET Core 2
【发布时间】:2017-12-08 11:17:08
【问题描述】:

在最新的 ASP.NET MVC CORE 2 默认模板上,我试图通过如下修改控制器和操作来更改默认操作。我希望看到默认登录页面,但我遇到 404 http 错误。我做错了什么?

您可以在默认的 ASP.NET CORE 2 MVC 项目上验证此问题。

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Account}/{action=Login}/{id?}");
    });
}

【问题讨论】:

  • 在问题中包含控制器和目标操作。目前状态下的问题尚不清楚,因为它不完整,需要太多问题才能澄清所问的问题。阅读How to Ask,然后提供minimal reproducible example,可用于重现您的问题,让我们更好地了解所询问的内容。
  • @Nikosi 您是否在默认的 ASP.NET Core 模板中尝试过这个?它对你有用吗?

标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.0


【解决方案1】:

如果您查看 AccountController 类,您会看到它被 Route 属性修饰,如下所示:

[Route("[controller]/[action]")]
public class AccountController : Controller

但是,如果您查看HomeController 类,您会发现它没有 装饰有这样的属性:

public class HomeController : Controller

因为AccountController 使用的是Attribute routing,所以不会使用Conventional routing 模板提取。 docs 解释了这种互斥性:

定义属性路由的动作不能通过常规路由到达,反之亦然。

【讨论】:

  • Serpent 在解释上打败了我,但如果你想这样做,解决方案是从 AccountController 中删除 [Route("[controller]/[action]")]
猜你喜欢
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2018-04-05
  • 2021-12-16
  • 2019-05-12
相关资源
最近更新 更多