मैं एएसपी नेट कोर ViewComponent का उपयोग कर रहा हूं और मेरे पास घटकों के बीच साझा एक सामान्य कार्य है इसलिए मैंने एक सामान्य ViewComponent बनाने का फैसला किया और अन्य सभी घटकों को इससे प्राप्त होना चाहिए

मैंने पहले यह कोशिश की

    public class CommonViewComponent: ViewComponent
    {
       //some methods
    }

और इस तरह बच्चे घटक

 public class SubDealsViewComponent: CommonViewComponent
 {
      public async Task<IViewComponentResult> InvokeAsync()
      {
          //calling some methods from the parent
      }
 }

इस स्थिति में, मुझे एक त्रुटि का सामना करना पड़ा कि मूल घटक में Invoke() या InvokeAsync() होना चाहिए

जब भी मैंने मूल घटक के लिए Invoke() विधि बनाई तो मुझे यह त्रुटि मिली

InvalidOperationException: घटक देखें 'Components.SubDealsViewComponent' में 'InvokeAsync' या 'Invoke' नाम की बिल्कुल एक सार्वजनिक विधि होनी चाहिए।

1
esamaldin elzain 24 मार्च 2021, 15:42

1 उत्तर

सबसे बढ़िया उत्तर

सदस्यों का पुन: उपयोग करने के उद्देश्य से, आपके मूल दृश्य घटक वर्ग को abstract के रूप में घोषित किया जा सकता है और इस तरह इसे Invoke या InvokeAsync परिभाषित करने की आवश्यकता नहीं है, इस तरह:

public abstract class CommonViewComponent: ViewComponent
{
   //some methods
}

यह समझ में आता है क्योंकि अन्यथा यह एक वैध प्रयोग करने योग्य दृश्य घटक हो सकता है लेकिन यह आपका उद्देश्य नहीं है (इसे सीधे उपयोग करना)।

1
King King 24 मार्च 2021, 16:16
1
यह काम करता है हाँ मैं इसे सीधे उपयोग नहीं करने वाला हूं, मैं इसका उपयोग कुछ तरीकों को रखने के लिए करूंगा जो सभी घटकों में IHttpContextAccessor को इंजेक्ट करने के बजाय HttpContext और सत्र का उपयोग करता है।
 – 
esamaldin elzain
24 मार्च 2021, 16:26