6

Okay, sono molto nuovo con C# e sto provando a creare un piccolo sito Web utilizzando ASP MVC2.ASP MVC C#: è possibile passare valori dinamici in un attributo?

Desidero creare il mio attributo di autorizzazione. ma ho bisogno di passare alcuni valori se questo è possibile.

Ad esempio:

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

voglio autorizzare l'accesso a una pagina. ma dipende dal valore passato al controller. Quindi l'autorizzazione dipende dal groupID. È possibile raggiungere questo in qualsiasi modo?

Grazie in anticipo.

risposta

4

Utilizzare il provider valore:

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 possono aiutare.

HTHS,
Charles

+0

Questo dovrebbe fare il trucco. Grazie! –

2

si ottiene da Request.Form

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

Che funzionerà solo se è un messaggio ... – Charlino

+0

È possibile utilizzare Richiesta ["groupID"] quindi. –

0

si ottiene da Request.Form

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