有没有一种方法可以从c属性所使用的方法向其发送参数
本文关键字:方法 参数 属性 一种 有没有 | 更新日期: 2023-09-27 18:28:19
如何将发送给使用该属性的函数的参数传递到属性中?我需要做这样的事情。。。
[Authorize, AuthorizeLimited( ModuleID=pageModuleId)]
[HttpPost]
public ActionResult MoveModule(int pageModuleId, int sequence)
{
db.PageModule_Move(pageModuleId, sequence);
return Json("OK");
}
发送到方法的pageModuleId也必须转到属性。很抱歉,如果已经问过这个问题,我找不到答案。
编辑
好吧,使用@jrummell提供的答案,这里是我的第一个操作过滤器属性:)这只是为了阻止编辑没有排列的模块(ajax使用)的人。
public class AuthorizeModuleEditAttribute : ActionFilterAttribute
{
private int _moduleID;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
foreach (var parameter in filterContext.ActionParameters)
{
if (parameter.Key == "pageModuleId")
{
_moduleID = (int)filterContext.ActionParameters["pageModuleId"];
}
}
if (!SiteHelper.UserPermsForModule(_moduleID)) //checks if user has perms to edit module
throw (new Exception("Invalid user rights"));
base.OnActionExecuting(filterContext);
}
}
否,属性参数值必须是编译时常量。
但是,如果实现自己的操作过滤器,则可以覆盖OnActionExecuting
并检查filterContext.ActionParamters
中的操作参数。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
foreach(var parameter in filterContext.ActionParameters)
{
if (parameter.Key == "pageModuleId")
{
// do something with pageModuleId
}
}
base.OnActionExecuting(filterContext);
}
属性与方法关联,而不是与方法调用及其参数关联。