9

मैं नियंत्रक तर्क को दृश्य घटक वर्ग में स्थानांतरित करने की कोशिश कर रहा हूं, लेकिन नियंत्रक केवल क्लाइंट साइड विजेट के लिए जेएसओएन लौटाता है जो मेरे व्यू घटक का यूआई है।जेएसओएन को एक व्यू घटक से कैसे वापस करें?

public IActionResult TreeData(string dir = "") 
{ 
    var browsingRoot = Path.Combine(_config.BaseDir, dir); 
    var nodes = new List<TreeNode>(); 
    nodes.AddRange(RecurseDirectory(browsingRoot)); 
    return Json(nodes); 
} 

इस नियंत्रक में ठीक है, लेकिन ViewComponent व्युत्पन्न वर्ग Json वापसी विधि पसंद नहीं करता है: यह कोर नियंत्रक कोड जहां समस्या है। मेरे द्वारा देखे जाने वाले सभी उदाहरण return View(*<something>*) का उपयोग करते हैं।

देखें घटक पूरे प्रतिक्रियाओं को वापस नहीं करना चाहते हैं, इसलिए मुझे लगता है कि इसे कम से कम शुद्ध HTML वापस करने के लिए Content वापसी विधि होना चाहिए।

+0

डॉक्स: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view -कंपनी – Nkosi

+1

दृश्य में घटक का उपयोग करने का इरादा रखने के बारे में कुछ और विवरण जोड़ने का प्रयास करें। उत्तर देने में मदद मिलेगी। – Nkosi

+0

आपको अपने घटक से जेसन वापस करने की आवश्यकता क्यों है? यह घटकों के लिए डिजाइन नहीं किया गया था। आपको इसे देखने (वैकल्पिक मॉडल के साथ) वापस करने की आवश्यकता है। कृपया अपना विचार भी प्रदान करें, संभवतया एचटीएमएल पीढ़ी को देखने में मदद मिल सकती है (क्या आपने प्रश्न में उल्लेख किया है, आप InvokeAsync से शुद्ध एचटीएमएल वापस कर सकते हैं, लेकिन क्या यह आपकी मदद करेगा?) – ingvar

उत्तर

2

ऐसा लगता है कि यह सामग्री वापस, नहीं एक दृश्य के द्वारा किया जा सकता:

public IActionResult TreeData(string dir = "") 
{ 
    var browsingRoot = Path.Combine(_config.BaseDir, dir); 
    var nodes = new List<TreeNode>(); 
    nodes.AddRange(RecurseDirectory(browsingRoot)); 
    return new ContentViewComponentResult(JsonConvert.SerializeObject(nodes)); 
} 
संबंधित मुद्दे