本文介绍了如何使控制器的名字连字符" - "分开吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以使用

  [ActionName(我-行动-名称)]
公众的ActionResult MyActionName()
{
    返回查看();
}

但我在改变控制器的名称面临的一个问题。
有一些注释可用,使控制器的名称连字符( - )?在MVC 4分离

有点这样的:

  [ControllerName(我 - 控制器 - 名称)]
公共类MyControllerName:控制器
{}


解决方案

的是一个很好的ansver:

添加自定义路由处理程序(以取代部分选择你想怎么处理TA hyphenes):

 公共类HyphenatedRouteHandler:MvcRouteHandler
{
    保护覆盖的IHttpHandler GetHttpHandler(RequestContext的的RequestContext)
    {
        。requestContext.RouteData.Values​​ [控制器] = requestContext.RouteData.Values​​ [控制器]的ToString()更换( - ,);
        。requestContext.RouteData.Values​​ [行动] = requestContext.RouteData.Values​​ [行动]的ToString()更换( - ,);
        返回base.GetHttpHandler(RequestContext的);
    }
}

和在使用你的 RouteConfig

  routes.Add(
        新干线({控制器} / {行动} / {ID}
            新RouteValueDictionary(
                新{控制器=家,行动=索引,ID = UrlParameter.Optional})
                新HyphenatedRouteHandler())
        );

I am able to use the

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

But I am facing a problem in changing the controller's Name.Is there some annotation available to make controller name hyphen (-) separated in MVC 4?

Somewhat like this:

[ControllerName("My-Controller-Name")]
public class MyControllerName : Controller
{

}
解决方案

Here is a good ansver:

Add custom route handler (in replace part choose how you want ta handle hyphenes):

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);
    }
}

and use it in your RouteConfig

routes.Add(
        new Route("{controller}/{action}/{id}",
            new RouteValueDictionary(
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
                new HyphenatedRouteHandler())
        );

这篇关于如何使控制器的名字连字符" - "分开吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 17:53