2012-02-19 4 views
0

私たちは場所に持っているこのRestfulRoutingフレームワークを使用しようとしている...サードパーティ製のフレームワークは、こちらをご覧ください:http://stevehodgkiss.github.com/restful-routing/RestfulRoutingルーティングライブラリ - ルートの問題 - おかしな

私は把握することはできませんなぜ私は私が期待しているように見えないルートのリストを取得しているのですか?私はその1ページのドキュメントを読んだことがあります(私にはいいですが欠けています)。そして、私が行った、あるいは定義しなかった特定のアクションのためにどこからも出てこないルートが生成されます。

パブリッククラスルート:例えば

は、ここ1つのI設定だRouteSet { 公共の静的な無効スタート(){ VARルート= RouteTable.Routes。 routes.MapRoutes();

using System.Web.Mvc; 

namespace OurCompanyName.Web.Controllers.WebApp 
{ 

    public class CarController : Controller 
    { 

     public ActionResult Index(string carId) 
     { 
      // logic 
     } 


     public ActionResult Edit(int id) 
     { 
      // logic 
     } 


     [HttpPost] 
     public ActionResult Update(FormCollection formCollection, int id = 0) 
     { 
     // logic 
     } 


     public ActionResult CarTypes() 
     { 
      // logic 
     } 


     public ActionResult New() 
     { 
      // logic 
     } 


     public ActionResult Delete(int id) 
     { 
      // logic 
     } 
    } 

}

しかし、私:車用 }

public override void Map(IMapper map) 
{ 

    map.Resources<CarController>(cars => 
    { 
     cars.As("Cars"); 
     cars.Collection(x => 
     { 
      //x.Get("Edit"); 
      x.Post("Update"); 
      x.Get("Delete"); 
     }); 
    }); 

}

私のコントローラは、この(私はここであなたを与えているスケルトン/トップレベル・ビュー)のように見えますこのフレームワークのデバッグツール(つまり、http://localhost/routedebug)を私のマシンや開発サーバーで見てみると、奇妙なことが吐き出されています。デバッグ・ツールを介してそれらをT:

enter image description here

だからここですべてのこれらの複製された(のような削除して2つの異なる方法/エントリを示す更新)、どこたまたはどのように生成なる車/ {ID} /編集パスましたここでこのフレームワークから?

最終的に私はCars/{id}/Deleteを持っていますが、私はこのフレームワークで何を試しても、それを設定することはできません。

名前とエンドポイントがどこに入っているのかわかりません...これは何を使用していますか?私がMVCを使用したとき、それは自分が設定した経路だけを気にし、[名前]#[名前]は気にしませんでした。私はそれがおそらくこのフレームワークの専有物であることを認識していますが、これについて多くの文書を見つけることはできません。なぜなら、その規則で使用したり使用したりすることのないデフォルトルートを吐き出しているのです。例えば

私は/規則は、この事が生成したこれらのルートを使用する必要がありません:

219 POST車の車は#私はおそらく車を見たいと思い、私にとって

作成/作成/ {ID }または車/ {id} /作成。あなたがRESTfulな大会のIMOで行くなら、それはCars/Create/{id}でなければなりません。ここで{id}は最後です...しかし、それは私の質問の外の別の話題です。コントローラー/ {id}/idが関わっている場合はアクションを実行するというチームの標準があります。

要約:最終的にはこれがどのように機能しているのかを尋ねています。このフレームワークでここで確立されたCars/{id}/Deleteルートを取得するにはどうすればいいですか?

答えて

1

リソースメソッドは、コントローラの7つのcrudルート(デバッグ出力の下の7)を生成します - index、show、new、edit、update、create、destroy生成される経路は、cars.Only("index", "create")またはcars.Except("destroy")で調整できます。

エンドポイントは、ルートがコントローラ#actionに接続されているものです。あなたの削除リンク作業ユースメンバーを取得するには

cars.Member(x => 
{ 
    x.Get("Delete"); 
} 

をあなたはCars/Create/{id}のようなルートを望むなら、私はあなたが安らかなルーティングを使用していないことを示唆しています。または、チームになぜそれを使用しているかを聞くことができますか?

+0

ちょっと私はちょうど物事を見直すことからすべてを得る。しかし、どのようにして/ Controller/{id}/actionを編集のためにそこに置いたのですか?あなたのフレームワークに定義された通常のmvcルートは表示されません。それはどこかから来なければならない。また、コントローラ/アクション/ {id}はどうやって安心できませんか?私にとっては、それはhttp://wekeroad.com/2007/12/06/aspnet-mvc-using-restful-architecture/であるように思えます。 – PositiveGuy

+0

そして私はx.Get( "Delete")を試しました。私が何をするか(HttpPostまたはHttpDeleteで削除アクションをデコレートするか、またはHttp属性を全く使わないで、ヒットしません)。コントローラー/ {id} /削除かコントローラー/削除/ {id}が必要なのですが、フレームワークがMVCでこのような一般的な使用法をサポートしていないのはなぜですか?理解できません。 – PositiveGuy

+0

これは.Cemberと比較したメンバーですか?あなたのフレームワークからすべての.Collectionを使用しています。あなたのフレームワークを使用している私たちのルートには全くメンバーがいません。どういうわけか、あなたのルートツールに表示されるようにコントローラ/ {id}/Editを得ることができます。ここでも、MVCのアウトオブボックスルーティングを使用していないので、これはフレームワークからどのように生成されていますか? – PositiveGuy