【问题标题】:Removing /Home in route for Home Controler为 Home Controller 移除 /Home 路径
【发布时间】:2020-05-19 12:54:00
【问题描述】:

对于 Asp.Net Core 3.1 项目,如何删除在 Home 控制器中的操作的 url 中包含 /Home 的要求?

我尝试使用属性[Route("/")] 来装饰控制器,但它不起作用。

启动配置是 Visual Studio 模板的默认配置:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

【问题讨论】:

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


    【解决方案1】:

    将空路由模板添加到控制器和索引操作:

    [Route("")]
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
    
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
    
        [Route("")]
        public IActionResult Index()
        {
            return View();
        }
    
        [Route("Privacy")]
        public IActionResult Privacy()
        {
            return View();
        }
    
        [Route("Error")]
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
    

    【讨论】:

    • 这对我很有效。它甚至负责在 asp-* 属性中形成正确的 url。例如:&lt;form asp-controller="Home" method="post" asp-action="Init"&gt; 将生成这个 html:&lt;form method="post" action="/Init"&gt;。如果只是配置路由,我怀疑是否会处理这些事情。
    【解决方案2】:

    您的路线中有一个默认值:

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapRazorPages();
    });
    

    试试这个:

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller}/{action}/{id?}");
        endpoints.MapRazorPages();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-26
      • 2020-05-15
      • 2020-01-05
      • 2021-09-10
      • 1970-01-01
      • 2019-04-27
      • 2017-07-10
      • 1970-01-01
      相关资源
      最近更新 更多