2009-12-15 17 views
23

क्या कोई तरीका है कि मैं जावास्क्रिप्ट के साथ web.config में कॉन्फ़िगरेशन मान पढ़ सकता हूं? मैं ऐसा क्यों करना चाहूंगा?जावास्क्रिप्ट से वेब.config पढ़ना

मेरे पास मेरी वेबसाइट में एक टाइमर है जो उपयोगकर्ता को 20 मिनट के लिए निष्क्रिय होने पर गिनती टाइमर (2 मिनट के लिए नीचे गिना जाता है) के साथ एक मोडल संवाद पॉप अप करेगा। यदि उपयोगकर्ता प्रतिक्रिया नहीं देता है, तो यह उसे लॉग आउट करता है। यदि वह करता है, तो यह सर्वर पर जाता है (सत्र को बनाए रखने के लिए) और सत्र को जीवित रखता है

यह 15 मिनट जेएस फ़ाइल में हार्डकोड किया गया है। मैं नहीं बल्कि यह/कुछ अन्य फ़ाइल यह मुश्किल जे एस

यहाँ में कोडित है कोड स्निपेट

$.fn.idleTimeout = function(options) { 
     var defaults = { 
        //I would like to pick these values from some config file 
      inactivity: 900000, //15 minutes 
      noconfirm: 120000, //2 minutes 
      sessionAlive: 900000, //15 minutes 
      click_reset: true, 
      logout_url: '/Views/Pages/Timeout.aspx' 
     } 

कोई सुझाव की तुलना में एक कॉन्फ़िग फ़ाइल से लेने के लिए चाहेगा?

संपादित करें: यह एक अलग जेएस फ़ाइल में है। <% =%> त्रुटि "अवैध XML वर्ण [इस त्रुटि को तोड़ें] निष्क्रियता देगा: <% = ConfigurationManager.AppSettings [" निष्क्रियता "]%>;"

उत्तर

44

आप अपनी जावास्क्रिप्ट एएसपी.NET से उत्पन्न कर सकते हैं।

तब बस अपने सर्वर साइड पर सेटिंग को आपके var defaults को इस प्रकार लिख:

var defaults = { 
    inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %> 
} 

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

आप स्थिर js फ़ाइलों में अपने जावास्क्रिप्ट रखना चाहते हैं, तो आप कर सकते हैं अभी भी अपने var defaults को अपने ASP.NET एप्लिकेशन द्वारा प्रदान किए गए छोटे <script> से प्रारंभ करें। web.config में AppSettings की तरह आपकी सेटिंग्स वैश्विक होंगी।

+1

अच्छा एक। धन्यवाद। यह मेरे मास्टर पेज – ram

+0

में बेहतर होगा ................... एक – Lijo

+0

क्या मैं अभी भी इसका उपयोग कर सकता हूं यदि यह सिर्फ जावास्क्रिप्ट फ़ाइल है? – Mitz

0

अपने जे एस फ़ाइल गतिशील बनाने और यह एक सर्वर साइड स्क्रिप्ट जो अपने web.config पढ़ सकते हैं

14

देखने से चर के रूप में उन्हें पास करें द्वारा लिखा टाइमआउट की है। के रूप में कई वार्स के लिए

<script type="text/javascript"> 
    // needs to reside in your *.aspx file. 
    $(function() { 
     initPage(<%= Settings.Default.Inactivity %>, <%= Settings.Default.NoConfirm %>, <%= Settings.Default.LogoutUrl %>) 
    }); 
    // Can reside in your *.aspx or in a *.js file. 
    function initPage(inactivity, noconfirm, logoutUrl) { 
     $.fn.idleTimeout = function(options) { 
      inactivity: inactivity, 
      noconfirm: noconfirm, 
      logout_url: logoutUrl 
     }; 
    }; 
</script> 

दोहराएँ आप मिल गया है के रूप में।

+1

जैरेट: यह जेएस को एएसपीएक्स और जेएस फ़ाइल में विभाजित करेगा। मुझे लगता है कि अगर हम इसे एक ही स्थान पर बनाए रख सकते हैं तो यह अच्छा होगा – ram

4

आमतौर पर आप ग्राहकों को सीधे पहुंचने के लिए web.config नहीं चाहते हैं, क्योंकि इसमें आपके कॉन्फ़िगरेशन के बारे में कुछ महत्वपूर्ण जानकारी हो सकती है (उदाहरण के लिए, आप जिस डेटाबेस का उपयोग कर रहे हैं उसके लिए प्रमाण-पत्र)।

अपनी जेएस फ़ाइल को गतिशील बनाना और अपनी कॉन्फ़िगरेशन से उचित पैरामीटर जोड़ना बेहतर है। उदाहरण के लिए:

$.fn.idleTimeout = function(options) { 
    var defaults = { 
       //I would like to pick these values from some config file 
      inactivity: <%=ConfigurationManager.AppSettings["Inactivity"].ToString() %>, 
      noconfirm: <%=ConfigurationManager.AppSettings["NoConfirm"].ToString() %>, //2 minutes 
      sessionAlive: <%=ConfigurationManager.AppSettings["SessionAlive"].ToString() %>, //15 minutes 
      click_reset: true, 
      logout_url: '/Views/Pages/Timeout.aspx' 
    } 
0

उदाहरण के लिए, आप के रूप में

= "2"

के बाद से एक जावास्क्रिप्ट फ़ाइल से आप इस पढ़ नहीं सकता (key = "ApplicationId" मूल्य जोड़ने एक appSettings चर परिभाषित किया गया है चूंकि यह सर्वर में रहता है), आप जो कर सकते हैं वह मास्टर फ़ाइल में चर परिभाषित करता है। इसलिए आपकी मास्टर फ़ाइल में जावा स्क्रिप्ट वैरिएबल होगा।

"<% वर AppID = ConfigurationManager.AppSettings [" ApplicationId "];%>"

अब जावा स्क्रिप्ट फ़ाइल से आप इस चर के बाद से इस siteHost चर जावा स्क्रिप्ट में एक वैश्विक गुंजाइश है पहुँच सकते हैं।

तो आप इस चर के रूप में अपने .js फ़ाइल में,

चेतावनी (AppID) देख सकते हैं;

6

अलग-अलग स्थैतिक जेएस फ़ाइल से सीधे कॉन्फ़िगरेशन फ़ाइल तक पहुंचने के लिए यह संभव नहीं है। ऐसा करने का एक तरीका है .aspx पृष्ठ में जावा स्क्रिप्ट जोड़ना।

मेरा वेब कॉन्फ़िग

<appSettings> 
    <add key="test" value="textBox"/> 
    </appSettings> 

मेरे aspx पेज enter image description here

हम विश्व स्तर पर इस चर सेट कर रहे हैं इसलिए हम अपने स्थिर js अंदर इस चर का उपयोग कर सकते फाइल मेरी js home.js फ़ाइल

function ReadConfigSettings() 
{ 
    alert(test); 
} 

ताकि हम इस वायु द्वारा जावास्क्रिप्ट से वेब कॉन्फ़िगरेशन मान पढ़ सकें y

4

कॉन्फ़िगरेशन फ़ाइल पर मान डालने के बाद, जिस पृष्ठ पर आप मूल्य का उपयोग करेंगे, इस प्रकार जावा स्क्रिप्ट को इस तरह से बोलेगा: आप जावा स्क्रिप्ट में वैल्यू को वैश्विक रूप में एक्सेस करेंगे, यह आवश्यक नहीं है इसे घोषित करें

वेब config पर

:

</appSettings> 
    <add key="varName" value="1" /> 
    </appSettings> 
html पृष्ठ पर

:

<script> 
    var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]'; 
</script> 
संबंधित मुद्दे