

お世話になっています。

ASP.NET MVCで、共通の基本Classを継承する複数のControllerがあり、いずれも同じActionFilterが設定されています。

[code]

    public class BaseController : Controller
    {
        public MemberParam  mParam;
    }
    
    [AnalyseSession]
    public class MemberController : BaseController
    {
        // some codes
    }
    
    [AnalyseSession]
    public class HomeController : BaseController
    {
        // some codes
    }
    
[/code]

AnaliseSession アクションフィルタ内部で、呼び出したControllerの内部プロパティに値をセットしたいです。

[code]

    public class AnalyseSessionAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext context) {
            var sessions    = context.HttpContext.Session;
            // セッションを取得してうんちゃらします
            // ここがわからない部分
            var controller = context.Controller as MemberController;
            controller.mParam = this.mParam;
        }
    }
    
[/code]

単一のコントローラなら、見たとおり問題な参照できますが、複数コントローラ・多数のプロパティの場合、シンプルに実装する方法をご教示ください。


CC BY-SA 3.0
2015-03-19T04:59:41.257
8096
2015-04-30T14:24:08.690
8912
question
c# asp.net
ASP.NET MVCで、ActionFilterの中からControllerのプロパティに値をセットしたい


上記のコメントを元に、自己レスとして回答しておきます。

[code]

    public class AnalyseSessionAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext context) {
        var sessions    = context.HttpContext.Session;
        // セッションを取得してうんちゃらします
        // ポリモーフィズムを用い、継承元クラスにキャストする
        var controller = context.Controller as BaseController;
        controller.mParam = this.mParam;
    }
    
[/code]


CC BY-SA 3.0
2015-04-30T14:24:08.690
9706
2015-04-30T14:24:08.690
8912
8096
answer