方法属性与方法的param?

时间:2010-08-17 07:54:20

标签: .net asp.net-mvc-2 attributes

如果重要,这是在ASP.NET MVC2中 - 我该怎么做 - 如何将“id”参数应用于属性?以下语法显然不起作用:)

    [AuthorizeProject(ProjectId = id)]
    public ActionResult Browse(int id)
    {
        // Stuff

        return View();
    }

3 个答案:

答案 0 :(得分:1)

不是尝试在Attribute构造函数中设置,而是在其中一个事件处理程序中设置ProjectId?您可以通过上下文对象访问RouteData。

public override void OnAuthorization(AuthorizationContext filterContext)
    {
        ProjectId = filterContext.RouteData.Values["id"].ToString();
    }

您只需要确保在具有id参数的方法上使用它,或者在OnAuthorization方法中执行某种类型的验证检查。

答案 1 :(得分:0)

在评估属性时,Browse函数的id参数不在范围内。你不能这样做。

答案 2 :(得分:0)

必须在编译时知道属性参数和属性值,通常是文字。

您无法将方法参数传递给属性。

根据您的目的,将采用不同的方法,但如果您没有详细了解您的建议,那么建议很难。