2015-09-16 8 views
12

के लिए व्यूपोनेंट विकल्प मेरे पास एक दृश्यकल्प है जिसमें कुछ पुन: प्रयोज्य व्यावसायिक तर्क शामिल हैं जो विभिन्न पृष्ठों में एम्बेड होते हैं। यह ठीक काम कर रहा है। हालांकि, अब मुझे AJAX का उपयोग करके दृश्यकंप को रीफ्रेश करने की आवश्यकता है।AJAX रीफ्रेश

क्या इसे पूरा करने का कोई तरीका है? जो मैंने पढ़ा है, उससे संभव नहीं है, हालांकि वह जानकारी थोड़ी पुरानी थी। यदि यह संभव नहीं है, तो सबसे अच्छा विकल्प क्या है?

+0

में वर्णित दृष्टिकोण का उपयोग कर सकते हैं बस एक विचार के रूप में .. AJAX को ताजा सामग्री प्राप्त करने के लिए एक यूआरएल की आवश्यकता है। जिसका अर्थ है नियंत्रक में एक क्रिया जोड़ना। उस क्रिया में एक दृश्य हो सकता है जो ViewComponent को आमंत्रित करता है। – eadam

उत्तर

22

बीटा 7 पर अब एक नियंत्रक से सीधे ViewComponent को वापस करना संभव है। the announcement

की MVC/उस्तरा अनुभाग की जांच करें MVC में नए ViewComponentResult यह आसान एक कार्रवाई से एक ViewComponent का परिणाम वापस जाने के लिए बनाता है। यह आपको एक दृश्यमान समापन बिंदु के रूप में एक ViewComponent के तर्क आसानी से बेनकाब करने की अनुमति देता है।

[ViewComponent(Name = "MyViewComponent")] 
public class MyViewComponent : ViewComponent 
{ 
    public IViewComponentResult Invoke() 
    { 
     var time = DateTime.Now.ToString("h:mm:ss"); 
     return Content($"The current time is {time}"); 
    } 
} 

की तरह एक नियंत्रक में एक विधि बनाएं::

public IActionResult MyViewComponent() 
{ 
    return ViewComponent("MyViewComponent"); 
} 

और मेरे त्वरित और गंदी ajax से एक बेहतर काम कर

तो तुम इस तरह एक साधारण दृश्य घटक हो सकता था रीफ्रेश करें:

var container = $("#myComponentContainer"); 
var refreshComponent = function() { 
    $.get("/Home/MyViewComponent", function (data) { container.html(data); }); 
}; 

$(function() { window.setInterval(refreshComponent, 1000); }); 

बेशक, इससे पहले बीटा 7 आप @eedam द्वारा सुझाए गए वर्कअराउंड के रूप में एक दृश्य बना सकते हैं या these answers

+0

इस उत्तर के लिए धन्यवाद। एक समय की कमी के कारण, मैं बस अपने नियंत्रक से आंशिक दृश्य लौटने का मार्ग चला गया जिसने मेरी समस्या हल की। जब हम बीटा में जाते हैं तो मैं वापस जा सकता हूं और इस समाधान को दोबारा कर सकता हूं। – czuroski

+0

हाय! क्या आप अपने जावास्क्रिप्ट का एक विस्तृत उदाहरण पोस्ट कर सकते हैं? क्या हम पुराने @Ajax सहायक का उपयोग नहीं कर सकते? –

+0

जहां तक ​​मुझे पता है, AJAX हेल्पर्स अभी भी [उनके बैकलॉग] (https://github.com/aspnet/Mvc/issues/2015) का हिस्सा हैं। जेएस के बारे में, तीसरा कोड स्निपेट सबसे सरल जेएस है जिसे आपको एचटीएमएल के हिस्से को रीफ्रेश करने की आवश्यकता होगी जिसमें व्यू घटक –

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