2013-02-09 37 views
9

Asp.Net MVC में गैर-क्रिया के साथ सजाए गए निजी तरीकों और कार्रवाइयों के बीच अंतर यदि मैं NonAction विशेषता के साथ एक क्रिया विधि को सजाने के लिए इसे साइट पर जाने वाले उपयोगकर्ता द्वारा कॉल करने की अनुमति नहीं दी जाएगी। ऐसा ही होता है जब मैं इसे private

तो दोनों के बीच क्या अंतर है और क्या कोई विशेष उद्देश्य है जिसके लिए NonAction विशेषता बनाई गई है?Asp.Net MVC

उदाहरण के लिए क्या asp.net MVC के संदर्भ निश्चित रूप से मैं जानता हूँ कि एक public है और अन्य एक में

[NonAction] 
public ActionResult SomeAction(){} 

और

private ActionResult SomeAction(){} 

के बीच का अंतर private

उत्तर

8

है यही एकमात्र अंतर है। विशेषता तब उपयोग की जाती है जब आप एक ऐसी विधि चाहते हैं जिसमें हस्ताक्षर हो, जो इसे क्रिया करे, लेकिन आप एक कार्यवाही नहीं करना चाहते हैं।

कि के लिए एक प्रयोग के लिए एक उदाहरण है एक विधि है कि कार्रवाई के तरीकों उनके लिए ActionResult निर्माण करने के लिए कहते हैं:

[NonAction] 
public JsonResult JsonInfo(string id, string value) { 
    return Json(new { id = id, value = value }); 
} 

public JsonResult GetBusInfo() { 
    return JsonInfo("4", "Bus"); 
} 

public JsonResult GetCarInfo() { 
    return JsonInfo("8", "Car"); 
} 

यह बजाय निजी की तो होगा सार्वजनिक करने का कारण यह है कि अन्य नियंत्रकों में क्रियाओं से इसका भी इस्तेमाल करें।

+0

अन्य नियंत्रक 'गैर-क्रिया' के रूप में चिह्नित 'सार्वजनिक' विधि का उपयोग कैसे कर सकते हैं? – mipe34

+3

@ mipe34: नियंत्रक का एक उदाहरण बनाकर और विधि को कॉल करें। – Guffa

0

दोनों कार्य विधि के साथ समान कार्य करते हैं, आप उन्हें अलग या एक साथ उपयोग कर सकते हैं।

[NonAction]   
     private ActionResult Details(int? id) 
     { 
      if (id == null) 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
      } 
      FEED_TBL fEED_TBL = db.FEED_TBL.Find(id); 
      if (fEED_TBL == null) 
      { 
       return HttpNotFound(); 
      } 
      return View(fEED_TBL); 
     } 

अगर यह ऊपर कोड की तरह घोषित तो जब हम विवरण कार्रवाई विधि यह it.Rather के लिए यह त्रुटि दिखाई देगा नहीं जाना होगा करने के लिए जाने की कोशिश करेंगे।

{{ HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.}} 

इससे पता चलता है कि हमारे विस्तार लिंक को देखने के लिए कार्यवाही विधि और हमारे नियंत्रक को कोई संदर्भ मिलता है।

+1

पूंजीकरण क्यों? – manetsus

+0

404 की प्रतिक्रिया आम है। उनमें से किसी एक के साथ या दोनों एक साथ आप एक ही प्रतिक्रिया प्राप्त करेंगे। आप क्या इंगित करने की कोशिश कर रहे हैं? –