gpt4 book ai didi

.net - 在 .net mvc3 应用程序中映射 Controller 和操作之前,如何将 "-"替换为 url 中的 "_"

转载 作者:行者123 更新时间:2023-12-04 06:11:40 24 4
gpt4 key购买 nike

大家好:我正在开发一个 .net mvc3 应用程序。
这是我的 Controller 和操作:

public class Foo_Bar : Controller
{
public ViewResult Foo_Bar()
{

return View();
}
}

我的通讯员 View 文件是:Foo_Bar.cshtml

现在,我的问题是:我有一个网址:www.mystite.com/foo-bar/foo-bar
但是这个 url 不能调用 Foo_Bar/Foo_Bar Controller 和 Action ,除非我把它写成: www.mystite.com/foo_bar/foo_bar 。

现在我需要在路由系统映射我的 Controller 和操作之前用“_”替换“-”。我可以在 routes.MapRoute() 中做吗?有人请帮助我。谢谢你提前!ps:这是我第一次在堆栈溢出中提问:)

最佳答案

您可以创建自定义 RouteHandler更改 {action} 的值和 {controller} .首先,创建您的 RouteHandler,如下所示:

using System.Web.Mvc;  
using System.Web.Routing;

public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var routeData = requestContext.RouteData;
var controller = routeData.Values["controller"].ToString();
routeData.Values["controller"] = controller.Replace("-", "_");
var action = routeData.Values["action"].ToString();
routeData.Values["action"] = action.Replace("-", "_");
var handler = new MvcHandler(requestContext);
return handler;
}
}

然后,按如下方式更改您的默认路由:
routes.Add("Default",  
new Route("{controller}/{action}/{id}",
new RouteValueDictionary(
new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
new MyRouteHandler()
)
);
);

当此路由满足请求时,RouteHandler 会将破折号更改为下划线。

关于.net - 在 .net mvc3 应用程序中映射 Controller 和操作之前,如何将 "-"替换为 url 中的 "_",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708155/

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