2016-04-25 8 views
2

私のデモasp.net mvcアプリケーションで私はルーティングの問題に直面しています。すなわち、 actionresultまたはそのサブクラス以外の戻り値の型を持つアクションメソッドは、そのルート定義が最初に配置されず他のルート定義の前に配置されていなければ呼び出されません。 void/string /その他の戻り値の型を持つアクションメソッドは、そのルート。ルートマップが最初に配置されている場合にのみ呼び出されます。 EX用 私が持っているとアクションメソッドの場合は、私はそれが呼び出さなっている他のroutecollection.maproute前に、最初にルーティングコードasp.net MVCルーティングの順序

routecollection.maproute("route1","{controller}/{action}",new {controller="cont1",action="method1"} 

を置いた場合にのみ、その後、コントローラCONT1内部

public string method1() 
{ 
} 

を言います。それ以外の場合は呼び出されません。この背後にある理由を教えてください。

+2

@StephenMueckeは、最初の一致するルートは常に実行されるので(表示されている 'route1'ルートは' Default'ルートと同じです) –

+0

最初の一致するルートは常に実行されていますので、おそらくこの記事はあなたに役立つだろうhttp://www.codeproject.com/Articles/624181/Routing-Basics-in-ASP-NET-MVC – KanisXXX

+1

ContentResultオブジェクトにラップされた文字列の結果を返すのは良い方法です。ルーティングの問題も解決します。この問題に関する詳細な議論がある[ここ](http://stackoverflow.com/questions/18482293/asp-net-mvc-contentresult-vs-string) –

答えて

1

デフォルトのルート設定は、常にルート設定の最後にする必要があります。ルートコンフィギュレーションは一致するコンフィギュレーションを解析するので、それを受け入れ、そのパスにルーティングします。したがって、最初にデフォルト設定を指定すると、常に一致してそのパスにルーティングされます。

関連する問題