2012-08-03 13 views
5
से serverside कोड निष्पादित

सुनिश्चित नहीं हैं कि अगर यह संभव है या नहीं, लेकिन यहाँ मेरे परिदृश्य है:javaScript

हमारे aspx फ़ाइलों के बारे में 10 में हम एक ही JavaScript फ़ंक्शन है, मैं इन सभी पृष्ठों से निकाल देने और डाल चाहते हैं यह मुख्य जावास्क्रिप्ट फ़ाइल (main.js) में है जो सभी पृष्ठों के लिए वैश्विक है, इसलिए इसे बनाए रखना आसान है। वर्तमान aspx पृष्ठों में जावास्क्रिप्ट कोड इस तरह दिखता है:

var regEx_gaid = <%= regEx["regEx_gaid"] %>; 
var regEx_wCard = <%= regEx["regEx_wildCard"] %>; 
var regEx_fCss = <%= regEx["regEx_flattenCss"] %>; 
var regEx_iCss = <%= regEx["regEx_inlineCss"] %>; 
... 

function doSomething() { 
    // do something with those variables declared above. 
} 

सुनिश्चित नहीं हैं कि main.js. में उन चर के लिए सर्वर साइड मूल्यों को प्राप्त करने के लिए कैसे

भी यह भी प्रासंगिक हो सकता है:

"regex" अंदर <%= regEx["regEx_gaid"] %> सर्वर साइड पर एक शब्दकोश संग्रह है और "regEx_gain" regex शब्दकोश का मूल्य का उपयोग करने की कुंजी है।

धन्यवाद।

उत्तर

1

आपके पास एक अलग एएसपी पृष्ठ हो सकता है जो आपके चर के सामग्री को आउटपुट करता है। फिर आप जावास्क्रिप्ट से उस पृष्ठ पर AJAX अनुरोध कर सकते हैं।

आशुलिपि के लिए JQuery का उपयोग कर:

var regEx_gaid = ""; 

$.get('regex_gaid.aspx', function(data) { 
    regEx_gaid = data; 
}); 
+0

धन्यवाद। मुझे यह समाधान पसंद है, और मैंने अभी कोशिश की है और यह काम करता है, लेकिन मैं अभी भी उत्सुक हूं कि अतिरिक्त एएसपीएक्स पेज बनाने के बिना करना संभव है या नहीं। – Sammy

1

अपने पृष्ठों में, आप RegisterStartupScript का उपयोग करके इन जावास्क्रिप्ट प्रत्येक पृष्ठ में गतिशील वार्स बना सकते हैं:

this.ClientScript.RegisterStartupScript(this.GetType(), "MainVars", "var regEx_gaid = '" + regex_gaid.ClientID + "';", true); 

हम बड़े पैमाने पर इस तंत्र का उपयोग करें: रजिस्टर में कोड-पीछे नियंत्रण चर (वे प्रत्येक पृष्ठ में उत्सर्जित कर रहे हैं), लेकिन फिर उन्हें एक केंद्रीय लिपि में प्रयोग करें (आपके main.js के समान)।

+0

मैं <% = regex [ "regEx_gaid" अंदर मेरे सवाल लेकिन regex modifed ]%> सर्वर पक्ष पर एक शब्दकोश संग्रह है और regEx शब्दकोश के मान तक पहुंचने के लिए "regEx_gain" कुंजी है। – Sammy

+0

यह वही अवधारणा होनी चाहिए: यदि आप पहले से ही सिंटैक्स का उपयोग कर जेएस में खींच रहे हैं, तो आप जो स्क्रिप्ट दिखा चुके हैं उसे संशोधित करें। यदि यह पहली बार है कि आप क्लाइंट को डिक्शनरी भेजने की कोशिश कर रहे हैं, तो आपको सर्वर पर जेएसएस संरचना बनाने की सबसे अधिक संभावना है और इसे स्टार्टअप स्क्रिप्ट में उस चर को असाइन करना होगा (हम यह भी करते हैं)। –

1

आप एक main.js.aspx तो main.js.aspx करने के लिए main.js में स्क्रिप्ट ले जाते हैं, और main.js.aspx एक जावास्क्रिप्ट फ़ाइल के रूप में उपयोग जोड़ सकते हैं?

main.js.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="main.aspx.cs" Inherits="TempProject.js.main" %> 
var regEx_gaid = <%= regEx["regEx_gaid"] %>; 
var regEx_wCard = <%= regEx["regEx_wildCard"] %>; 
var regEx_fCss = <%= regEx["regEx_flattenCss"] %>; 
var regEx_iCss = <%= regEx["regEx_inlineCss"] %>; 

codebehind:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.ContentType = "application/javascript"; 
    } 

अन्य फ़ाइलें:

<script type="text/javascript" src="js/main.js.aspx"></script> 
+0

मुख्य एएसपीएक्स पेज पूरे एप्लिकेशन द्वारा उपयोग किया जाता है, यह सभी पृष्ठों पर कोड दिखाने के लिए बहुत अनुकूल नहीं लगता है। – Sammy

+0

मेरा मतलब है कि एक नया 'main.js.aspx' जोड़ें, और इसे जेएस फ़ाइल के रूप में उपयोग करें। – Charlie

+0

आह होचा, हाँ, यह भी काम करेगा, हालांकि मुझे अभी भी उन सभी पृष्ठों पर जाना होगा और नई फाइल का संदर्भ देना होगा। – Sammy

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