NopCommerce プラグインを作成していて、ActionName を他のメソッドと共有している ActionMethod の FilterProvider にカスタム ActionFilter を登録したいと考えています。
同じ ActionName を持つ 2 つの ActionMethods を次に示します。
[HttpPost, ActionName("Edit")]
[FormValueRequired("cancelorder")]
public ActionResult CancelOrder(int id)
{...}
[HttpPost, ActionName("Edit")]
[FormValueRequired("captureorder")]
public ActionResult CaptureOrder(int id)
{...}
私のフィルター プロバイダーでは、どうにかして CancelOrder メソッドを CaptureOrder から分離する必要があります。
public class OrderFilterProvider : IFilterProvider
{
private readonly IActionFilter _actionFilter;
public OrderFilterProvider(IActionFilter actionFilter)
{
_actionFilter = actionFilter;
}
public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
{
if (actionDescriptor.ControllerDescriptor.ControllerType == typeof(OrderController) &&
actionDescriptor.ActionName.Equals("Edit"))
{
return new Filter[]
{
new Filter(_actionFilter, FilterScope.Action, null)
};
}
return new Filter[] { };
}
}
このコードでは、フィルターは CancelOrder と CaptureOrder の両方に登録されますが、CancelOrder メソッドだけに登録するにはどうすればよいですか?
私の考えは、メソッド名または FormValueRequired 属性のパラメーター値に基づいてそれらを分離することでしたが、それを行う方法を見つけることができませんでした。
FormValueRequired にはパブリック プロパティがなく、次のようになります。
public class FormValueRequiredAttribute : ActionMethodSelectorAttribute {
private readonly string[] _submitButtonNames;
private readonly FormValueRequirement _requirement;
public FormValueRequiredAttribute(params string[] submitButtonNames):
this(FormValueRequirement.Equal, submitButtonNames)
{
}
public FormValueRequiredAttribute(FormValueRequirement requirement, params string[] submitButtonNames)
{
//at least one submit button should be found
this._submitButtonNames = submitButtonNames;
this._requirement = requirement;
}
}
そして、これは私のデバッガーでどのように見えるかです: http://www.tiikoni.com/tis/view/?id=4843369
メソッドの名前を取得する方法はありませんか?