6
[ActionName("about-us")]
public ActionResult EditDetails(int id)
{
    // your code
}

上記はアクションで機能しますが、コントローラーでも同じ(または同様の)ことができるようにしたいと思います。つまり、URL名にもハイフンを含めます。これを達成する簡単な方法はありますか(ActionName属性を試しましたが、運がありません)

4

5 に答える 5

7

最も簡単な方法は、カスタムルートを追加することです。

routes.MapRoute("RouteName", "controler-name/{action}/{id}", new { controller = "ControllerName", action = "Index", id = "" });

可能かもしれませんが、私は以前にそのようなコントローラー名属性を見たことがありません。

于 2011-03-12T08:32:38.400 に答える
3

カスタム ルート ハンドラを使用して、必要な機能を提供できます。

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

そして、そのハンドラを使用してルートを登録する必要があります。

var route = routes.MapRoute(
    "Some Action",
    "{controller}/{action}/{id}"
);

route.RouteHandler = new HyphenatedRouteHandler();

ここで同様の質問があります: ASP.net MVC support for URL's with hyphens

于 2011-06-16T14:31:58.810 に答える
0

ルート テーブルのハイフンでつながれたルートは、デフォルト ルートの前にある必要があります。

routes.MapRoute(
                  "InformationAbout", 
                  "information-about/{action}/{id}", 
                   new { controller = "InformationAbout", action = "Index", id = "" }
                );

 routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
于 2012-02-02T21:21:01.643 に答える
0

多分これはうまくいきます:

public class CustomControllerFactory : DefaultControllerFactory {

   protected override Type GetControllerType(RequestContext requestContext, string controllerName) {
      return base.GetControllerType(requestContext, controllerName.Replace("-", ""));
   }
}
于 2011-03-14T03:12:40.710 に答える
0

質問に対する正しい答えはここにあるかもしれません。他のすべては単一の URL に対して機能する回避策ですが、これは一般的なアプローチです

http://blog.didsburydesign.com/2010/02/how-to-allow-hyphens-in-urls-using-asp-net-mvc-2/

于 2012-11-17T20:12:04.137 に答える