3

かなり基本的な質問ですが、ドキュメントで見つけることができないようです。私は RestfulRouting を (ナゲット経由で) Mvc 4 アプリに統合てきましたが、名前を変更したり、コントローラー アクションに複数の引数を指定したりして、パラメーターを微調整した方がよい場合があります。

例えば

/resource/:id/:slug

public ActionResult Show(int id, string slug) { return View(); }

また

/resource/:custom_param_name

public ActionResult Show(string custom_param_name) { return View(); }

このシナリオをカバーする例またはドキュメントはありますか?

4

1 に答える 1

1

私が正しく理解していれば、ID ではなく名前でルーティングしようとしています。RestfulRouting で。

100% 可能かどうかはわかりませんが、Create Custom Routesを試すことができます。

必要に応じてルート セットにカスタム ルートを追加できるように、2 つの追加の方法が提供されています。Map は、標準のマッピングを追加できる連鎖可能なメソッドです。Route は、カスタム ルートをルート セットに追加できるようにするメソッドです。

例えば

Map("posts/{year}/{slug}")
  .To<PostsController>(x => x.Post(-1, ""))
  .Constrain("slug", @"\w+")
  .Constrain("year", @"\d+");
Route(new Route("posts/{action}", 
  new RouteValueDictionary(new { controller = "posts" }), 
  new MvcRouteHandler());

また

Map("resource/{custom_param}")
  .To<ResourcesController>(x => x.Resource(-1, ""))
  .Constrain("custom_param", @"\w+");
Route(new Route("resource/custom", 
  new RouteValueDictionary(new { controller = "resource" }), 
  new MvcRouteHandler());

したがって、次を使用できます。

public ActionResult Custom(string custom_param) { return View(); }

それの使い方 ?

public class Routes : RouteSet
{
    public override void Map(Mapper map)
    {
        map.Root<HomeController>(x => x.Show());
        map.Path("test/{id}").To<TestController>(x => x.Test()).Constrain("id", @"\d+");
        map.Resource<SessionsController>();
        map.Resources<BlogsController>(blogs =>
        {
            blogs.As("weblogs");
            blogs.Only("index", "show");
            blogs.Collection(x => {
                x.Get("latest");
                x.Post("someaction");
            );
            blogs.Member(x => x.Put("move"));

            blogs.Resources<PostsController>(posts =>
            {
                posts.Except("create", "update", "destroy");
                posts.Resources<CommentsController>(c => c.Except("destroy"));
            });
        });
    }
}

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new RestfulRoutingViewEngine());

        RouteTable.Routes.MapRoutes<Routes>();
    }
}

使用方法: ASP .NET MVC の安らかなルーティング

これに関する完全なガイドはここにあります: RestfulRouting

于 2012-10-18T21:32:10.003 に答える