2017-09-30 1 views
0

私は本当に最初は問題ではないようだが、本当にうまくいきませんでした。だから私はそこにいる誰かが私の問題に光を当てることができると願っています。Umbracoカスタムルーティング

私はUmbracoバージョン7.6.4アセンブリを実行しているサイトを持っています:1.0.6396.36621。

そして、ここに私の問題は、私は、URLがされるので、アクションメソッドを持つカスタムコントローラを使用したいということです。

http://example.com/CONTROLLER/ACTION/SOME_KIND_OF_ID私はそれがsurtain特定のURLである必要があり、このサイトが古いサイトに置き換えられますので、と私は以前のサイトにリダイレクトする必要がありますが、特定のIDがそのルーティングURLへのパラメータとして来る場合は必要です。

これまでルーティングがハイジャックされているため、サイト上の特定のページをロードするときにインデックスメソッドをコントローラで使用できるようになりました。しかし、これまでのところはhttp://example.com/CONTROLLER/に限られています。指定されたACTION-nameもトリガーできるようにしたいと考えています。 (まったく正しい方法はわかりません)

コントローラと同じ名前のページをUmbracoで作成しました。

そして、残りのサイトで動作するようにデフォルトのUmbracoルーティングが必要です。私はちょうど特定のコントローラ/アクション/ IDへのアクセスを取得する必要があります:)

私は本当に誰かが私に救いの手を与えることができることを願っています!

よろしく、 ダニエル

答えて

2

あなたがあなたのコントローラと表面のコントローラをリンクできるイベント

IApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) 
    { 
     RouteTable.Routes.MapRoute("NameTheRoute", "{controller}/{action}/{id}", 
           new { 
             controller = "YourController", 
             action = "YourAction", 
             id = UrlParameter.Optional 
            }); 
    } 

RouteTable.Routes.MapRouteを使用することができます。

+0

ありがとうございました!私はちょっと初心者の質問に従います.Umbracoだけを実行しているときはルーティングクラスのapp_startフォルダはありません。私が作ってそこにRouteTableをスローするか、どうすればいいですか? Daniel – Wahlstedt

+0

更新 - 新しいMapRouteを作成するクラスを作成しました。 http://example.com/controller/action/idに入ると魅力的なヒットになりますが、問題が発生してルートに入るたびに発生します。今では、すべてがそのルーティングを通過するので、私はスタートページに行くこともできません。何か案は?私はスタートページのためのトラックに戻ってサイトを得ることができるが、運がないデフォルトのものを作成しようとしました。 Daniel – Wahlstedt

+0

(staticapi/action/{id})のような静的ルートを与えるためにワイルドカード{controller}/{action}を使用する代わりに、あなたが渡す匿名オブジェクトに対して正確なコントローラとアクションを提供することができます3番目の議論。そうすれば、特定のルートと特定のコントローラーおよびアクションだけがマップされます。 (例が必要な場合は、私の答えを更新するように教えてください。)ありがとう –