2011-12-27 7 views
5
समस्या

कि एक @Section के भीतर एक जे एस समारोह के भीतर एक सी # चर रखने गलत जावास्क्रिप्ट का उत्पादन (MVC 4 केवल में) है।ASP.NET MVC 4 - @Section भीतर जावास्क्रिप्ट समारोह के भीतर रेजर का कारण बनता है स्कोप त्रुटि

MVC 3 में एक जे एस समारोह में, सब कुछ उम्मीद के रूप में कार्यान्वित।

@section test { 

<script type="text/javascript"> 
    $(function() { 
     alert(@DateTime.Now); 
    }); 
</script> 
} 

यह सटीक कोड लें और इसे एक एमवीसी 4 ऐप में रखें और आपको विकृत जेएस मिल जाएगा।

इस पृष्ठ के HTML वास्तव में निम्नलिखित प्रस्तुत करना होगा:

<script type="text/javascript"> 
    $(function() { 
     alert(12/27/2011 11:04:04 AM); 

और html

उत्सर्जित करेगा); }

नोट करें कि क्लोजिंग स्क्रिप्ट टैग का उत्पादन नहीं होता है।

यह जे एस समारोह में बंद घुंघराले ब्रेस प्रकट होता है उस्तरा में बंद घुंघराले ब्रेस हो उलझन में है।

ध्यान दें कि मैं भी एक RenderSection घोषणा कर रहा हूँ ("परीक्षण", झूठे ") मेरे _Layout.cshtml फ़ाइल में।

+0

वाह, इस पोस्ट ने मुझे एमवीसी 4 के बारे में पता चला ... –

उत्तर

4

थोड़ा पुराना जवाब, लेकिन मुझे एक ही समस्या का सामना करना पड़ रहा था, इसलिए मैंने माइक्रोसॉफ्ट पर फीडबैक रिपोर्ट जमा कर दी है। उम्मीद है कि इसे पूर्ण रिलीज से पहले हल किया जाना चाहिए।

https://connect.microsoft.com/VisualStudio/feedback/details/720079/mvc-4-javascript-in-section-issue

+0

माइक्रोसॉफ्ट कनेक्ट को सबमिट करने के लिए धन्यवाद। –

1

मैं इस तरह की समस्याओं को देखा है। <text></text> टैग

+0

यह मेरा प्रारंभिक विचार था। मैंने इसे और साथ ही @: वाक्यविन्यास की कोशिश की लेकिन न तो दायरे के मुद्दे को हल किया। –

2

में अपनी अलर्ट बयान लपेटें मैं क्या कर समाप्त हो गया अब में समापन जे एस समारोह उत्सर्जक गया था के लिए @ Html.Raw()।

चूंकि यह पुनः बनाना, मैं माइक्रोसॉफ्ट के एक बग के रूप में इस प्रस्तुत करने के लिए जा रहा हूँ बहुत आसान है।

@section test { 
    <script type="text/javascript"> 
     $(function() { 
      alert(@DateTime.Now); 
     @(Html.Raw("});")) 
    </script> 
} 
4

मैं जानता हूँ कि एक छलबल किया गया है के बाद से प्रश्न पूछा गया था, लेकिन आप भी कुछ इस तरह की कोशिश कर सकते हैं।

@section test { 
    <script type="text/javascript"> 
     $(function() { 
      alert(@(DateTime.Now)); 
     }); 
    </script> 
} 

@ के बाद "()" नोट करें।

इस सहायता की आशा करें।

0

निश्चित रूप से एक बग। मैं आपके द्वारा पोस्ट किए गए इस काम को पसंद करता हूं। किसी कारण से, अन्य रेजर तत्व ब्रैकेट को सही ढंग से समझने लगते हैं, इसलिए मैं स्क्रिप्ट सामग्री को ब्रेसिज़ के दूसरे सेट में लपेटता हूं।

@section test { 
if (true) { 
<script type="text/javascript"> 
    $(function() { 
     alert(@DateTime.Now); 
    }); 
</script> 
} 
} 
3

क्षमा करें, मैं सिर्फ मदद कर सकता है नहीं, लेकिन यहाँ झंकार ... मैं नहीं दिख रहा है कि कैसे प्रारंभिक सवाल में वाक्य रचना वास्तव में काम करेगा। जब मैं इसे एमवीसी 3 में कोशिश करता हूं, वीएस -2010 में, यह "डेटटाइम" के तहत एक हरा स्क्विगली लाइन डालता है, और जब आप उस पर होवर करते हैं, तो यह कहता है "सशर्त संकलन बंद है"।लेकिन अगर मैं उद्धरण में यह चारों ओर है, यह काम करता है, के रूप में में:

@section test { 

<script type="text/javascript"> 
    $(function() { 
     alert("@DateTime.Now"); 
    }); 
</script> 
} 

और फिर जब मैं इसे चलाने (F5) यह अपेक्षा के अनुरूप जावास्क्रिप्ट चेतावनी प्रदर्शित करता है, और जब मैं स्रोत देखते उसे रेंडर:

<script type="text/javascript"> 
    $(function() { 
     alert("07/09/2012 10:41:26"); 
    }); 
</script> 
संबंधित मुद्दे