gpt4 book ai didi

asp.net-mvc-routing - 使用新的 "[controller]/[action]" token 和区域的 MVC 6 属性路由

转载 作者:行者123 更新时间:2023-12-04 16:07:39 24 4
gpt4 key购买 nike

好的,我知道在 MVC 6 中使用属性路由的最简单方法是:

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}

public void Configure(IApplicationBuilder app)
{
app.UseMvc();
}
}

这是使用新 token (无区域)的 Controller 代码:
[Route("[controller]/[action]")]
public class HomeController : Controller
{
}

这是使用新 token (带区域)的 Controller 代码:
[Area("MyArea")]
[Route("[controller]/[action]")]
public class HomeController : Controller
{
}

问题:
  • 这是 MS 希望您使用区域和 token 对 Controller 进行编码的方式吗?
  • 还是有更清洁的方法?
  • 他们能以某种方式创建一个 [area] token 吗?

  • 最后,我知道我可以玩这个游戏,但不是第一种基于约定的方法 - app.UseMvc() - 最简单的吗?
    public void Configure(IApplicationBuilder app)
    {
    app.UseMvc(routes =>
    {
    routes.MapRoute(
    name: "areaRoute",
    template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
    });
    }

    最佳答案

    Microsoft 为您提供了两种选择,每种都有自己的优缺点。您应该根据您的上下文/需求来决定哪一个更好。

    基于约定的路由

    优点:

  • 它更简单,而不是在每个操作级别上定义所有内容,您只需一劳永逸地决定您的网址的外观。
  • 当您的网址与 Controller /操作名称完全匹配时完美。
  • 如果要更改 url,则需要更改类/方法的名称。
  • 非常适合具有干净且可预测的 url 结构的项目。
  • 非常适合快速制作新项目的原型(prototype)。
  • 对开发人员来说稍微容易一些 -> 通过知道你知道哪个 Controller / Action 位于功能
  • 的 URL

    缺点:
  • 你失去了一点控制

  • 基于属性的路由

    优点:
  • 让您完全控制 url 的外观,例如用于 SEO 目的。
  • 如果要更改 url,则无需更改类/方法的名称。
  • 当您的网址与 Controller 和操作名称不匹配或您想要手工制作它们(即客户想要)时,这是完美的。
  • 当您有一个遗留项目并希望具有兼容的 url 结构时,非常适合保持向后兼容性。

  • 缺点:
  • 需要更多的工作,因为您需要在代码中定义路由。请注意,将属性添加到类/方法只需几秒钟。

  • 如何决定使用哪一个:
  • 如果你有/期望有很少routes.MapRoute()调用 -> 使用约定路由作为更简单的
  • 如果您有/期望有很多 routes.MapRoute()调用 -> 使用属性路由
  • 关于asp.net-mvc-routing - 使用新的 "[controller]/[action]" token 和区域的 MVC 6 属性路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713954/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com