2012-05-22 6 views
10

त्रुटि CA1822: Microsoft.Performance: 'इस' पैरामीटर (या 'मेरे' विजुअल बेसिक में ) 'SomeController.AnAction (स्ट्रिंग, स्ट्रिंग)' की इस्तेमाल कभी नहीं किया है। उचित होने पर सदस्य को विधि (या दृश्य मूलभूत में साझा) के रूप में चिह्नित करें या 'यह'/'मी' विधि निकाय या कम से कम एक संपत्ति एक्सेसर का उपयोग करें।कोई भी नियंत्रक कार्रवाई पर CA1822 के उद्देश्य और संकल्प को समझा सकता है?

यूआरएल के माध्यम से अनुरोध किए जाने पर एक स्थिर कार्रवाई 404 नहीं मिली। कोड विश्लेषण के साथ अपेक्षित कार्य कार्रवाई बंद हो गई है। इसका क्या मतलब है और उचित उपाय क्या है?

नोट कि कार्रवाई का वापसी प्रकार PartialViewResult है, ऐसा प्रतीत नहीं होता है कि कोड विश्लेषण कार्रवाई के बारे में शिकायत करता है अगर वापसी प्रकार ActionResult है।

[HttpPost] 
    public PartialViewResult BlankEditorRow(string formId, Common.Entities.Common.ObjTypeEnum objType) 
    { 
     if (objType == Common.Entities.Common.ObjTypeEnum.Regular) 
      return new AjaxPartialViewResult("_RowEditor", new ProcedureEntryEntity()) { UpdateValidationForFormId = formId }; 
     else 
      return new AjaxPartialViewResult("_TemplateRowEditor", new ProcedureEntryEntity()) { UpdateValidationForFormId = formId }; 
    } 

अद्यतन: ActionResult में लौटने प्रकार बदलने की तरह लग रहा त्रुटि को हल करता है, और PartialViewResult एक ActionResult तो यह काम करना चाहिए है।

+0

कृपया प्रश्न में कोड या एक समान स्निपिट – robrich

उत्तर

10

मुझे संदेह है कि रिटर्न प्रकार किसी भी इंस्टेंस सदस्यों का उपयोग किए बिना कॉल किए बिना वास्तव में समस्या का समाधान करता है। मुझे संदेह है कि रिटर्न प्रकार को बदलने के लिए, आपने रिटर्न स्टेटमेंट को उस चीज़ पर बदल दिया जो इंस्टेंस सदस्य तक पहुंचा।

अब मुझे नहीं पता कि एमवीसी में रूट हैंडलिंग आपको विधि के रूप में चिह्नित करें, लेकिन यह जांच के लायक है। हालांकि प्रदर्शन के संदर्भ में चेतावनी दी गई है, मैं इसके बारे में इरादे और पठनीयता के संदर्भ में सोचूंगा।

आम तौर पर इसमें एक उदाहरण सदस्य (बल्कि स्थिर से) होने के लिए एक विधि या संपत्ति के लिए दो कारण हैं:

  • यह एक और उदाहरण सदस्य का उपयोग करने की वजह से जिस तरह से यह बर्ताव की स्थिति पर निर्भर करता है की जरूरत है आपत्ति
  • यह polymorphically उदाहरण उस पर कहा जाता है की वास्तविक प्रकार के आधार पर व्यवहार करने के लिए इतना है कि व्यवहार अधिरोहित जा सकता है

यदि इनमें से कोई मामला है की जरूरत है, तो विधि बनाया जा सकता है स्थिर जो इंगित करता है कि कोई बहुलकता अपेक्षित नहीं है और कोई उदाहरण स्थिति आवश्यक नहीं है। एक स्थिर सदस्य प्रभावी ढंग से विज्ञापित करता है कि केवल एक ही राज्य जिस पर निर्भर करता है वह स्वयं की स्थिति (और पैरामीटर) की स्थिति है, और यह polymorphically व्यवहार नहीं करेगा। किसी और चीज के अलावा, इसका मतलब है कि आप परीक्षण इसे बिना किसी उदाहरण के बना सकते हैं।

बेशक, यदि एमवीसी के बुनियादी ढांचे को की आवश्यकता होती है तो यह एक उदाहरण विधि हो, तो आपको उस तथ्य को इंगित करने के लिए एक टिप्पणी के साथ चेतावनी को दबाना चाहिए।

+0

हां, यदि आप इसे स्थिर बनाते हैं तो कार्रवाई रन टाइम पर उपलब्ध नहीं है क्योंकि यह नियंत्रक का एक उदाहरण बनाता है और यूआरएल रूट के आधार पर कार्रवाई को हिट करने का प्रयास करता है। मुझे संदेह है कि सीए यह स्लाइड है अगर यह एक एक्शन रिसेट है ... क्योंकि जैसे ही मैंने इसे रिटर्न टाइप किया था, त्रुटि समाप्त हो गई थी (मूल वापसी प्रकार PartialViewResult ActionResult से विरासत में है इसलिए कोई अन्य कोड बदलने की आवश्यकता नहीं है)। हालांकि मुझे कोई जानकारी नहीं है। मैं आपका जवाब दे रहा हूं क्योंकि यह बहुत ही जानकारीपूर्ण था और मैंने इस तथ्य के बावजूद कुछ नया सीखा, कि हम इसके असली हिस्से तक नहीं पहुंच पाए। – BigOmega

4

मुझे लगता है कि सीए सिर्फ यह नहीं मानता कि यह एमवीसी ऐप में नियंत्रक कार्रवाई है। मैं दबाना होगा।

संबंधित मुद्दे