2012-12-13 9 views
5

सीमांकक तो, वर्तमान में, एक एएसपी gridview के भीतर कैसे वर्ण से बचने के लिए, मैं निम्नलिखित हैजब सर्वर साइड का उपयोग कर

<span id="btnEdit" runat="server" onclick="ShowEditCriteriaFilterDialog('<%#Eval("intSMCID")%>', '<%#Eval("strDescription")%>')" class="linkText">Edit</span> 

क्या मैं अनिवार्य रूप से तलाश कर रहा हूँ वास्तव में करने के लिए उद्धरण के लिए वाक्य रचना है/डबल उद्धरण इसे ठीक से पूरा करें, जैसा कि मैंने ऊपर दिया है ठीक से काम नहीं करता है।

सबसे पहले, अगर मैं एकल उद्धरण के साथ पूरे ऑनक्लिक को समाहित करता हूं, और अंदर कोई अन्य उद्धरण नहीं डालता, तो यह प्रतिपादन उद्देश्यों के लिए काम करता है, लेकिन जब मैं वास्तव में रनटाइम पर लिंक पर क्लिक करता हूं, तो कुछ भी नहीं होता है।

यदि मैं एएसपीएक्स तत्व के अधिकांश गुणों की तरह डबल-कोट्स के साथ पूरे ऑनक्लिक को समाहित करता हूं, तो यह ठीक से प्रस्तुत नहीं करता है, और कॉमा के बाद सब कुछ जो पहले <% # Eval%> कथन के रूप में दिखाई देता है स्क्रीन पर वास्तविक पाठ। इससे मेरा मानना ​​है कि क्लिक हैंडलर को <% # Eval%> कथन के बीच में कहीं भी समाप्त होने से रोकने के लिए कुछ बचने की आवश्यकता है।

ध्यान दें कि अगर मैं रनैट = "सर्वर" लेता हूं और इसे डबल-कोट्स में एन्सेप्लेट करता हूं, तो यह बेहतर काम करता है ... लेकिन मुझे अन्य कार्यक्षमता के लिए सर्वर-साइड कंट्रोल होने की आवश्यकता है। पीछे पेज के कोड में है, जहां मैं FindControl के माध्यम से नियंत्रण का उपयोग करने की जरूरत है

उत्तर

0

Eval समारोह की जरूरत डबल उद्धरण है, तो आप एकल उद्धरण में विशेषता मान रैप करने के लिए है ।

आप runat="server" के साथ नियंत्रण के लिए एक ही संपत्ति मूल्य में स्थिर सामग्री और <%# ... %> ब्लॉक मिश्रण नहीं कर सकते हैं, इसलिए आपको पूरी स्ट्रिंग को एक <%# ... %> ब्लॉक में बनाने की आवश्यकता है।

एक <%# ... %> ब्लॉक में एक स्ट्रिंग के भीतर, आप एक एकल उद्धरण डालने के लिए &apos; उपयोग कर सकते हैं:
संपादित यह केवल .NET 4.0 में काम करता है; 2.0 में, यह &amp;apos; उत्पन्न करता है, जो काम नहीं करेगा। का प्रयोग करें डबल उद्धरण के बजाय:

onclick='<%# string.Format(
    "ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")", 
    Eval("intSMCID"), Eval("strDescription")) %>' 

अपने डेटा के आधार पर आप भी जावास्क्रिप्ट के लिए स्ट्रिंग मान एन्कोड करने के लिए आवश्यकता हो सकती है:

onclick='<%# string.Format(
    "ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")", 
    Eval("intSMCID"), 
    HttpUtility.JavaScriptStringEncode(Eval("strDescription", "{0}"))) %>' 

(कोड पठनीयता के लिए लिपटे - यह एक पर होने की जरूरत है एकल लाइन।)

+0

क्या आप जावास्क्रिप्टस्ट्रिंगएन्कोड के प्रतिस्थापन के बारे में सोच सकते हैं जो .net के पुराने संस्करणों में है। मेरा मानना ​​है कि .NET 4 या 4.5 है। यह प्रोजेक्ट .NET 2.0 है (मेरे नियंत्रण के बाहर) –

+0

@ScottFortier: यहां .NET 2.0 के लिए नमूना है: http://www.west-wind.com/weblog/posts/2007/Jul/14/Embedding -जवास्क्रिप्ट-स्ट्रिंग्स-ए-एएसपीएनईटी-पेज (इसमें केवल '' 'के लिए एक मामला गायब है, जो अन्य मामलों का पालन करना चाहिए।) –

+0

ठीक है, आपके उत्तर में पहला विकल्प/समाधान संकलित/रन/सही तरीके से प्रदर्शित करता है लेकिन जैसा अन्य उत्तर, क्लिक करते समय वास्तव में कुछ भी नहीं करता है, और ब्राउज़र में एक स्क्रिप्ट त्रुटि प्रदान करता है। संपादित: यह टैग स्रोत देखें में ऐसा दिखाई देता है –

0

मुझे लगता है कि समाधान

onclick='<%# "ShowEditCriteriaFilterDialog(" +Eval("intSMCID") + ","+ Eval("strDescription") +");" %>' 
+0

इस समाधान के साथ, यदि मैं संपादन लिंक पर क्लिक करता हूं ... कुछ भी नहीं होता है, हालांकि यह स्क्रीन –

+0

पर ठीक से प्रस्तुत करता है, मैं इसके साथ जोड़ता हूं, जब मैं कोड की रेखा पर स्रोत देखता हूं यह लिंक, ऐसा लगता है अगर eval ठीक से हो रहा है, जैसा कि दृश्य स्रोत दिखाता है:

+0

@ScottFortier: आपको शायद कंसोल में एक स्क्रिप्ट त्रुटि दिखाई देगी, क्योंकि विवरण में इसके चारों ओर उद्धरण नहीं हैं। –

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