gpt4 book ai didi

asp.net-mvc - 是否可以用另一个值更改 url 路由参数

转载 作者:行者123 更新时间:2023-12-01 11:02:59 24 4
gpt4 key购买 nike

我有 asp.mvc 项目。当前路由设置为形成以下 url:

site/school/45
site/school/45/courses
site/school/45/teachers
site/school/45/courses/17
etc.

我想将此“45”(学校的 ID)更改为更“用户友好”的名称,例如,将学校的“名称”设为“45”。现在 Action 方法是这样的:

public ActionResult Index(int schoolId)
{ ...

是否可以在不更改操作方法的情况下更改路由以显示学校名称而不是 schoolID?

最佳答案

“不改变操作方法”似乎是您问题中最重要的部分,对吧?

是的,你可以。您可以覆盖 Controller 类中的 OnActionEcecuting(ActionExecutingContext filterContext) 方法来为您进行名称-ID 映射。您需要执行以下操作:

  1. 实现基本 Controller 类,如下所示:

    public class BaseController: Controller
    {
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
    base.OnActionExecuting(filterContext);
    var shoolName = filterContext.RouteData.Values["schoolName"].ToString();
    var schoolId = ...; // Get school id from name somehow here
    filterContext.RouteData.Values.Add("schoolId", schoolId);
    }
    }

    (我在这里假设您将在 Global.asax.cs/RegisterRoutes 中将相应的路由参数名称从 schoolId 更改为 schoolName)。

    <
  2. 更新所有 Controller ,使它们不是从 Controller 而是从 BaseController 继承,如下所示:

    public class SomethingController: BaseController
    {
    ...
    }

在那之后一切都应该正常工作。您不需要更改您的 Controller 操作 - schoolId 参数在调用它们时已经就位。

关于asp.net-mvc - 是否可以用另一个值更改 url 路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941834/

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