私は汎用アクションフィルタを持っており、OnActionExecuting
メソッドで現在のモデルを取得したいと考えています。私の現在の実装は以下の通りです:アクションフィルタで現在のモデルを取得する方法
public class CommandFilter<T> : IActionFilter where T : class, new()
{
public void OnActionExecuting(ActionExecutingContext actionContext)
{
var model= (T)actionContext.ActionArguments["model"];
}
}
私のすべてのモデル名が同じであればうまくいきます。しかし、私はdiffernetモデル名を使用したい。
この問題を解決するにはどうすればよいですか?
あなたはモデルへのアクセスを得るbase MVC ControllerにActionExecutingContext.Controller
プロパティ
/// <summary>
/// Gets the controller instance containing the action.
/// </summary>
public virtual object Controller { get; }
と変換した結果を使用することができます
public class HomeController : Controller
{
[ServiceFilter(typeof(CommandActionFilter<CreateInput>))]
public IActionResult Create([FromBody]CreateInput model)
{
return new OkResult();
}
}
のようなものhttp://stackoverflow.com/questions/872796/asp-net-mvc-accessing-view-model-from-a-customを書き込むことができた場合に-action-filter – user2184057
@ user2184057これはビューモデル用であり、要求モデルではありません。 – Set