【问题标题】:change asp net mvc controller name in url更改 url 中的 asp net mvc 控制器名称
【发布时间】:2023-03-19 16:43:01
【问题描述】:

如果我们有“example_name”,我们可以使用 [ActionName("")] 在 url 中更改它所以,我想为控制器名称执行此操作。

我可以这样做:

ControllerName > example_nameController > 在 URL:“/case_studies/adaep”

我想在 URL 中像这样更改控制器名称:“/case-studies/adaep”

 [RoutePrefix("case-studies")]
public class case_studiesController : Controller
{
    // GET: CaseStudies
    [Route]
    public ActionResult Index()
    {
        return View();
    }
    [HttpGet]
    [Route("adaep")]
    public ActionResult adaep()
    {
        return View("/views/case-studies/pagename.cshtml");
    }
}

我这样做了,但仍然无法使用 /example_controller 的控制器名称

【问题讨论】:

    标签: c# asp.net-mvc controller


    【解决方案1】:

    全局启用路由:

    public static void RegisterRoutes(RouteCollection routes)
    {
    routes.MapMvcAttributeRoutes();
    // routes.MapRoute...
    }
    

    创建一个自定义路由处理程序,如本博客所示:

    public class MyRouteHandler : MvcRouteHandler{
        protected override IHttpHandler  GetHttpHandler(RequestContext requestContext)
        {
            requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_");
            requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_");
            return base.GetHttpHandler(requestContext);
        }
    }
    

    ...以及新路线:

    routes.Add(
            new Route("{controller}/{action}/{id}", 
                new RouteValueDictionary(
                    new { controller = "Default", action = "Index", id = "" }),
                    new MyRouteHandler())
        );
    

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2011-03-01
      相关资源
      最近更新 更多