6

Хорошо, что я очень новичок в C#, и я пытаюсь создать небольшой веб-сайт, используя ASP MVC2.ASP MVC C#: Можно ли передавать динамические значения в атрибут?

Я хочу создать свой собственный атрибут авторизации. но мне нужно передать некоторые значения, если это возможно.

Например:

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

Я хочу, чтобы разрешить доступ к странице. но это зависит от значения, переданного контроллеру. Таким образом, авторизация зависит от идентификатора groupID. Можно ли это добиться каким-либо образом?

Заранее спасибо.

ответ

4

Использование поставщика значение:

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 может помочь вам.

HTHS,
Чарльз

+0

Это должно сделать трюк. Благодаря! – 2010-05-10 05:45:00

2

Вы получаете его от Request.Form

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

Это будет работать только в том случае, если это сообщение ... – Charlino

+0

Тогда вы можете использовать Request ["groupID"]. –

0

Вы получаете его от Request.Form

общественного класса CustomAuthorizeAttribute: AuthorizeAttribute { защищен переопределение BOOL AuthorizeCore (HttpContextBase HttpContext) { //httpContext.Request.Form ["groupid"] return base.AuthorizeCore (httpContext); } }

Смежные вопросы