加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.net MVC支持带有连字符的URL

发布时间:2020-12-15 19:07:37 所属栏目:asp.Net 来源:网络整理
导读:有一个简单的方法可以让MvcRouteHandler将传入URL的动作和控制器部分中的所有连字符转换为下划线,因为方法或类名中不支持连字符。 这将是我可以支持这样的结构,如sample.com/test-page/edit-details映射到Action edit_details和controller test_pagecontro
有一个简单的方法可以让MvcRouteHandler将传入URL的动作和控制器部分中的所有连字符转换为下划线,因为方法或类名中不支持连字符。

这将是我可以支持这样的结构,如sample.com/test-page/edit-details映射到Action edit_details和controller test_pagecontroller,同时继续使用MapRoute方法。

我知道我可以指定一个动作名称属性和支持连字符在控制器名称,手动添加路由实现这,但我正在寻找一个自动化的方式,以便在添加新的控制器和操作时保存错误。

解决方法

C#版本的约翰的帖子任何人谁喜欢它: C# and VB version on my blog
public class HyphenatedRouteHandler : 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 HyphenatedRouteHandler())
        );

你可以使用下面的方法,但要记住,你需要命名视图My-Action,如果你喜欢让visual studio自动生成你的视图文件,这可能很讨厌。

[ActionName("My-Action")]
public ActionResult MyAction() {
    return View();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读