ASP.NET MVC カスタムアクションフィルターからアクションにオブジェクトを渡す 質問する

ASP.NET MVC カスタムアクションフィルターからアクションにオブジェクトを渡す 質問する

ASP.NET MVCのカスタムアクションフィルターでオブジェクトを作成すると、

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    DetachedCriteria criteria = DetachedCriteria.For<Person>();
    criteria.Add("stuff");

    // Now I need to access 'criteria' from the Action.....

}

現在実行中のアクションからオブジェクトにアクセスする方法はありますか。

ベストアンサー1

より良いアプローチPhil Haack によって説明されています。

基本的には次のことを行います:

public class AddActionParameterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);

        // Create integer parameter.
        filterContext.ActionParameters["number"] = 123;

        // Create object parameter.
        filterContext.ActionParameters["person"] = new Person("John", "Smith");
    }
}

唯一の注意点は、オブジェクト パラメータを作成する場合、クラス (この場合は Person) にデフォルト コンストラクターが必要であることです。そうでない場合は例外が発生します。

上記のフィルターの使用方法は次のとおりです。

[AddActionParameter]
public ActionResult Index(int number, Person person)
{
    // Now you can use number and person variables.
    return View();
}

おすすめ記事