2010-05-09 12 views
6

Bien, soy muy nuevo en C# y estoy intentando crear un pequeño sitio web usando ASP MVC2.ASP MVC C#: ¿Es posible pasar valores dinámicos a un atributo?

Quiero crear mi propio atributo de autorización. pero necesito pasar algunos valores si esto es posible.

Por ejemplo:

[CustomAuthorize(GroupID = Method Parameter?] 
    public ActionResult DoSomething(int GroupID) 
    { 
     return View(""); 
    } 

que desea autorizar el acceso a una página. pero depende del valor pasado al controlador. Entonces la autorización depende del groupID. ¿Es posible lograr esto de alguna manera?

Gracias de antemano.

Respuesta

4

utilizar el proveedor de valor:

public class CustomAuthorizeAttribute : FilterAttribute, IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     var result = filterContext.Controller.ValueProvider.GetValue("GroupId"); //groupId should be of type `ValueProviderResult` 

     if (result != null) 
     { 
      int groupId = int.Parse(result.AttemptedValue); 

      //Authorize the user using the groupId 
     } 
    } 

}

This article puede ayudarle.

HTHS,
Charles

+0

Esto debería hacer el truco. ¡Gracias! –

2

la recibe de Request.Form

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //httpContext.Request.Form["groupid"] 
     return base.AuthorizeCore(httpContext); 
    } 
} 
+0

Eso solo funcionará si es una publicación ... – Charlino

+0

Puede usar Request ["groupID"] y luego. –

0

la recibe de Request.Form

clase pública CustomAuthorizeAttribute: AuthorizeAttribute { protected override bool AuthorizeCore (HttpContextBase HttpContext) { //httpContext.Request.Form ["groupid"] return base.AuthorizeCore (httpContext); } }

Cuestiones relacionadas