8

強く型付けされたコントローラー アクションを作成する方法はありますか? 例えば:

私が使用するコントローラーでは:

aClientLink = Url.Action("MethodName", "ControllerName", new { Params... });

使用したい:

aClientLink = Url.Action(Controller.MethodName,ControllerName);

車輪の再発明はしたくありません。誰かが賢い解決策を持っていると確信しています。これにより、コンパイル時のチェックをコントローラー メソッドに追加できます。

4

1 に答える 1

4

HtmlHelper式を使用する独自の拡張メソッドを作成できます(モデルのプロパティを参照するために使用されるのと同じ方法)。

@* An expression used to indicate which property of the model should be
examined. It may or may not actually be executed. *@
@Html.IdFor( o => o.FirstName )

@* Don't actually evaluate the expression, just parse it for the method name *@
@Url.ActionFor( o => o.ControllerMethod() )

式を入力値として受け取るヘルパー メソッドの例については、MVC ソースを参照してください。式からオブジェクト プロパティに関するメタデータを取得する方法については、こちらの回答を参照してください。

でも...

ビューで使用すると、そのようなアプローチはビューをコントローラーに結び付けすぎると主張します。マジック ストリングは嫌いですが、完全なデカップリングを提供します。

このようなメソッドをコントローラー内で使用するかどうかは明確ではありません。その場合、関心の分離はそれほど問題になりません。アクション名に別名を付ける機能など、特定の機能は引き続き失われます。

于 2013-03-29T03:15:35.613 に答える