【问题标题】:Asp.net MVC route configAsp.net MVC 路由配置
【发布时间】:2021-04-23 22:47:36
【问题描述】:

首先,我不是开发人员(UI 设计师),但我不得不使用一些 asp.net,好吧,因为生活......所以我几乎一无所知。

我有这样的结构:

视图 > 合作伙伴 >

在“合作伙伴”中,我有 40 多个以 CamelCase 命名的文件,例如 FileName.cshtml 等...

我需要重新路由 url,所以不是“website/Partners/PartnerName”,而是这样的“website/partners/partner-name

我尝试了很多教程,但我就是不明白需要做什么才能实现这一目标。 我最接近解决方案的是在合作伙伴控制器中使用“[Route("partners/partner-name")]”。但是对于这个解决方案,我必须将那行代码添加到所有 40 个文件中(将来会有一百多个文件)。我相信必须有某种方法可以自动为我拥有的所有页面执行此操作,而不是手动编辑每个页面。

再说一次,我不是开发人员,我现在只是要处理这个问题,而且我对 .net 几乎一无所知。谢谢。

【问题讨论】:

  • 你使用的是哪个 asp.net mvc 版本?
  • 4.6.1 我相信

标签: asp.net asp.net-mvc url-rewriting routeconfig


【解决方案1】:

我猜 4.6.1 是 .Net-Framework。所以我只是拍摄了一个适用于 MVC 5 的答案,我们看看它有多适合你。 (因为版本控制很棘手 - 最近在 dotnet 领域令人困惑)。

您可以在名为 RouteConfig.cs 的文件中覆盖路由

routes.MapRoute(
            name: "OverrideRoute",
            url: "websites/partners/{partner-name}",
            defaults: new { controller = "AnController", action ="AnAction" }
    );

注意顺序很重要,第一场比赛获胜。此外,如果您特别想要 websites/partners/partner-name/contosocompany(/websites/partners/contosocompany,您需要调整 MapRoute 中的 url 属性

也应该可以对路线进行分组,请在此处查看此答案:Asp.net MVC 5 MapRoute for multiple routes

如果您的某些部分几乎类似于单独的 mvc 页面,请与您的开发人员交谈,您也可以利用称为 areas 的概念。例如,您的合作伙伴部分可能是一个区域。 https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?view=aspnetcore-5.0

...请记住,如果您是一名可以研究、阅读和更改代码的设计师 - 您已经在我们的行业中获得了商业优势。

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 2015-12-09
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多