2009-02-16 12 views
19

अद्यतन: इसके लिए एक वैकल्पिक शीर्षक हो सकता है: मैं अपने Silverlight 2.0 एप्लिकेशन से जावास्क्रिप्ट कैसे कॉल करूं?क्या सिल्वरलाइट पेज रीफ्रेश शुरू कर सकता है?

यहां आपके सभी सिल्वरलाइट गुरुओं के लिए एक त्वरित प्रश्न है।

मेरे पास एक सिल्वरलाइट ऐप है जो स्टॉपवॉच उलटी गिनती प्रदर्शित करता है। ऐप को एएसपी.Net वेब एप्लिकेशन में होस्ट किया गया है, स्टॉपवॉच शून्य होने पर मैं क्या करना चाहता हूं, ऐप होस्टिंग पेज के सर्वर पेज को रीफ्रेश करता है।

क्या यह संभव है?

यदि ऐसा है, तो कोड स्निपेट का कोई मौका?

उत्तर

20

Apparently आप एक जे एस स्क्रिप्ट सिल्वरलाइट से

HtmlPage.Window.CreateInstance 

या

HtmlPage.Window.Invoke 

जावास्क्रिप्ट का उपयोग करने के लिए कॉल कर सकते हैं refresh एक पेज

location.reload(true) 

है मैं एक Silverlight नहीं कर रहा हूँ या जावास्क्रिप्ट विशेषज्ञ हालांकि, सुनिश्चित नहीं है कि यह सभी ब्राउज़रों में काम करता है, या यहां तक ​​कि बिलकुल।

संपादित करें:

स्कॉट अपने अंतिम समाधान के साथ इस जवाब पर एक टिप्पणी पोस्ट।

उसे ASP.Net पृष्ठ पर एक जावास्क्रिप्ट क्लाइंट फ़ंक्शन बनाने की आवश्यकता है जिसे reload() कहा जाता है, जिसने location.reload (true) किया था। तो यह उसकी सी # कोड से एक साधारण बात को फिर से लोड करने के लिए किया गया था:

HtmlPage.Window.Invoke("reload"); 

के रूप में @ R4cOON सुझाव दिया, आप भी उपयोग कर सकते हैं:

System.Windows.Browser.HtmlPage.Document.Submit(); 
+1

HtmlPage.Window.Invoke ("location.reload (सही);"); सब के बाद मेरे लिए काम नहीं किया। जब मुझे पता चलता है कि वास्तव में क्या करता है, तो मैं इसे यहां पोस्ट करूंगा। फिर भी धन्यवाद। –

+4

ठीक है, यह वहां से 9 0% तरीका था। मुझे बस अपने मामले में ASP.Net पृष्ठ पर जावास्क्रिप्ट क्लाइंट फ़ंक्शन बनाने की आवश्यकता थी, जिसे रीलोड() कहा जाता था, जिसने location.reload (true) किया था। फिर यह मेरे सी # कोड से यह लाइन था कि यह लाइन हो: HtmlPage.Window.Invoke ("पुनः लोड करें"); फिर से धन्यवाद। –

+0

अच्छा, मैं इस नई जानकारी को शामिल करने के लिए अपना उत्तर अपडेट करूंगा –

1

चांदी के ऐप के लिए पेज पर जावास्क्रिप्ट में कॉल करना संभव है जो बदले में आपके पेज को रीफ्रेश कर सकता है। तो हाँ यह निश्चित रूप से संभव है!

25

क्यों बस सिल्वरलाइट पक्ष पर रहना नहीं और कॉल

System.Windows.Browser.HtmlPage.Document.Submit(); 

मेरे लिए एक इलाज करता है। पूरा पृष्ठ पुनः लोड हो जाता है और सिल्वरलाइट नियंत्रण वापस आ जाता है।

+0

यह वही चीज़ थी जो मैं ढूंढ रहा था। मैं जल्द ही इसे देख लूंगा, और अगर आप जिस तरह से काम कर रहे थे, तो यह आपके जवाब को +1 करेगा। धन्यवाद! –

+0

यह स्थानीय रूप से ठीक काम करता है लेकिन सर्वर पर काम नहीं करता है। – ThePower

+1

आपका क्या मतलब है? बेशक यह सर्वर पर काम नहीं करेगा, सिल्वरलाइट क्लाइंट साइड पर है! क्या आपका मतलब है कि आप अपने वेब सर्वर को क्लाइंट से पुनरारंभ करना चाहते हैं? – R4cOON

2

मेरे मामले में मैं एएसपीनेट प्रकार की पोस्टबैक नहीं करना चाहता था और मेरा सिल्वरलाइट पेज संदर्भ खोना चाहता था इसलिए मैंने इसे अपने पृष्ठ पर नेविगेट करके रीफ्रेश किया। इस तरह मेरी भाषा परिवर्तन में मैंने अपनी भाषा परिवर्तन को मेरे पृष्ठ पर देखा या 2008 टेम्पलेट में आने के रूप में देखें।

यह। सामग्री फ्रैम.Navigate (नया उरी ("", UriKind.Relative));

इस मामले में मैं अपने होम पेज पर था। "" का मतलब है होम पेज यदि आप सिल्वरलाइट टेम्पलेटेड नेविगेशन समाधान की जांच करते हैं।

6

HtmlPage.Window.Invoke("location.reload(true);"); पर क्यों एक त्वरित नोट काम नहीं करता है: यह मेरे त्वरित परीक्षण से दिखाई देता है कि जिस तरह से सिल्वरलाइट लागू होता है, निर्दिष्ट जावास्क्रिप्ट ऑब्जेक्ट पर दिए गए नाम के साथ एक संपत्ति को देखना और उसे कॉल करना है। तो यह कोड कहेंगे, "place.reload (true) नाम की विंडो ऑब्जेक्ट पर एक प्रॉपर्टी खोजें; ' और इसे शून्य तर्क के साथ बुलाओ। " इसके बजाय, GetProperty विधि है जो आपको विंडो की location संपत्ति प्राप्त करने देगी और उस पर reload को पैरामीटर true के साथ आमंत्रित करेगी। अंतिम कोड इस तरह दिखता है:

((ScriptObject)HtmlPage.Window.GetProperty("location")).Invoke("reload", true);

+0

यह एक अच्छा विकल्प है यदि मेजबान HTML पृष्ठ में कोई फॉर्म तत्व नहीं है जिसे सबमिट किया जा सकता है। –

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