例えば:
class MyContoller
{
[MyCustomAttribute]
public ActionResult MyAction(ModelX fromRequest, ModelY fromSession, ModelZ fromCookie)
{
string productId = fromRequest.ProductId;
string userId = fromSession.UserId;
string cultureName = fromCookie.CultureName;
}
}
理由:
コントローラーで Request、Session、および HttpContext にアクセスしたくありません。モデルをアクションに渡す MVC3 のデフォルトのアイデアは非常に優れています。
MyAction のパラメータ数を簡単に変更したい。たとえば、新しいパラメーターを追加すると、システムはパラメーターの名前またはタイプによって Request、Session、または Cookie の値を検索しようとし (Cookie 値にはカスタム ModelBinders が必要になる場合があると思います)、入力されたモデルをに渡します。私の行動。余分なコードを書く必要はありません。
カスタム属性 (例では MyCustomAttribute) でこのアイデアを実現できますか?