2010-05-09 12 views
6

ठीक है मैं सी # के लिए बहुत नया हूं और मैं एएसपी एमवीसी 2 का उपयोग कर एक छोटी वेबसाइट बनाने की कोशिश कर रहा हूं।एएसपी एमवीसी सी #: क्या गतिशील मानों को एक विशेषता में पास करना संभव है?

मैं अपनी खुद की प्राधिकरण विशेषता बनाना चाहता हूं। लेकिन अगर यह संभव है तो मुझे कुछ मूल्यों को पारित करने की आवश्यकता है।

उदाहरण के लिए:

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

मैं एक पृष्ठ पर पहुंच देना चाहते हैं। लेकिन यह नियंत्रक को दिए गए मूल्य पर निर्भर करता है। तो प्राधिकरण समूह आईडी पर निर्भर करता है। क्या यह किसी भी तरह से हासिल करना संभव है?

अग्रिम धन्यवाद।

उत्तर

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 आपकी मदद कर सकता है। AuthorizeAttribute { संरक्षित ओवरराइड bool AuthorizeCore (HttpContextBase HttpContext) { //httpContext.Request.Form:

HTHs,
चार्ल्स

+0

यह चाल करना चाहिए। धन्यवाद! –

2

आप Request.Form

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

यह केवल तभी काम करेगा जब यह एक पोस्ट है ... – Charlino

+0

आप अनुरोध ["groupID"] का उपयोग कर सकते हैं। –

0

आप Request.Form

सार्वजनिक वर्ग CustomAuthorizeAttribute से इसे पाने के ["groupid"] वापसी आधार। AuthorizeCore (httpContext); } }