ミドルウェアを作成しようとしていますが、現在のアクションメソッド(ある場合)に特定のフィルタ属性があるかどうかを知る必要があるため、その動作に基づいて動作を変更できます。HttpContextからASP.NETコアMVCフィルタを取得する方法
を実装しているときにのようなフィルタコレクションをResourceExecutingContext
と同じように取得することは可能ですか?
ミドルウェアを作成しようとしていますが、現在のアクションメソッド(ある場合)に特定のフィルタ属性があるかどうかを知る必要があるため、その動作に基づいて動作を変更できます。HttpContextからASP.NETコアMVCフィルタを取得する方法
を実装しているときにのようなフィルタコレクションをResourceExecutingContext
と同じように取得することは可能ですか?
今日は本当に可能ではありません。
注:実際には直接あなたの質問に答えるが、あなたのニーズに依存助け(とコードがコメントの長すぎる)
注2かもしれない:それはそれならば、コア上で動作するかどうかわかりません別のフィルタを一緒に使用されている場合は、フィルターで、知ることができる私に言うと、私は答え
を削除しない、ん:
public class OneFilter : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
// Check if the Attribute "AnotherFilter" is used
if (filterContext.ActionDescriptor.IsDefined(typeof(AnotherFilter), true) || filterContext.Controller.GetType().IsDefined(typeof(AnotherFilter), true))
{
// things to do if the filter is used
}
}
}
public class AnotherFilter : ActionFilterAttribute, IActionFilter
{
// filter things
}
AND/OR
あなたはフィルターが使用されているアクション知っているようにルートデータ内のいくつかのデータを置くことができます...
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RouteData.Values.Add("OneFilterUsed", "true");
base.OnActionExecuting(filterContext);
}
を
public ActionResult Index()
{
if(RouteData.Values["OneFilterUsed"] == "true")
{
}
return View();
}