9

如何使用连字符实现 asp.net mvc 动作名称,例如,家庭控制器中的动作名称在www.domain.com/about-us哪里。about-us使用这种方法,我可以实现具有类似contact-ushow-to等的动作名称。

4

4 回答 4

10

您可以在actionName标签内提供您的操作名称。

[ActionName("about-us")]
public ActionResult AboutUs() {
    return View();
}
于 2013-09-03T07:52:52.407 回答
10

这是 .Net MVC 5 项目问题的完整解决方案:

  1. 打开项目的App_Start/RouteConfig.cs文件。

  2. 在您的RegisterRoute方法上,修改如下代码:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapMvcAttributeRoutes(); // <--- add this line to enable custom attribute routes
    
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
    
  3. 现在,打开您的控制器文件,然后在您的操作顶部添加自定义路由的定义,如下所示:

    [Route("about-us")]
    public ActionResult AboutUs()
    {
        return View();
    }
    

您现在应该可以像这样使用您的自定义路由:

http://yourdomain.com/about-us
于 2015-10-20T16:27:47.463 回答
0

AreaRegistration.cs文件中,您可以添加路由表条目,如下所示......

        context.MapRoute(
            "about_us_default",
            "about-us",
            new { action = "AboutUs" }
        );
于 2013-09-03T09:14:11.387 回答
0

在 MVC5 中,您也可以设置属性路由:

    [Route("about-us")]
    public ActionResult AboutUs()
    {
        return View();
    }
于 2015-06-16T13:32:07.047 回答