2012-01-17 5 views
1

誰かがインタビューで私に次の質問をしてもらえません。誰か助けてください。ControllerにStatic ActionResultメソッドを作成できますか?

コントローラに静的なActionResultメソッドを作成できますか? 「はい」の場合。ベニフィットとは何ですか?もしそうでなければ。理由は何ですか?

+3

試してみましたか? –

+1

"ActionResultメソッド"とは何ですか? 'ActionResult'を返すメソッドですか?もちろん;何故なの? – SLaks

+0

@EAGER_STUDENT少し遅れました(ただし、遅すぎることはありません)。あなたがリンクした答えは、(実際には悪いアイデアのように聞こえる)静的コントローラの作成に関するものですが、この質問は通常のコントローラの静的なアクションメソッドに関するものでした。言い換えれば、あなたのリンクは誤解を招き、よく、間違っています。 – jahu

答えて

5

"ActionResultメソッド"がActionResultを返すメソッドであれば、それを静的宣言することはできますが、そのアクションを開始するときは呼び出されません。何らかのアクションを呼び出すと、ASP.NET MVCは(ControllerFactoryを使用して)コントローラのインスタンスを作成します。メソッドは静的なのでインスタンスに関係なくMVCによって呼び出されません。

+0

"したがって、呼び出されません"。 MVCによって、no。しかし、別のクラスや内部で呼び出すことができます。 –

+0

ありがとうございました。 –

+0

さらに、ビューを返すコントローラインスタンスが必要です。静的メソッドを宣言して文字列を返すことはできますが、見つからないことがあります。 – RickAndMSFT

1

ドンcontrollercontextなどのすべてのコントローラプロパティにアクセスできなくなるので、静的なアクションメソッドを作成することをお勧めします。

+0

コントローラの拡張機能を作成すると、これらの制限も共有されます。 'View'、' PartialView'などのようなコンテンツ生成メソッドを呼び出せないことも問題ですが、少なくともコントローラメソッドの使用ではなく、特定の 'Result'クラスを手動で作成することで部分的に克服することができます。 – jahu

関連する問題