2012-10-05 15 views
10

में धारा स्क्रिप्ट प्रस्तुत नहीं कर रहा है मैं वीएसआरसी का उपयोग कर एएसपीनेट एमवीसी 4 रेज़र में एक JQuery मोबाइल एप्लिकेशन विकसित कर रहा हूं, सीएसटीएमएल पेज अनुभाग स्क्रिप्ट में निम्न की तरह लिखा गया है।एएसपीनेट एमवीसी 4 रेजर

@section Scripts 
{ 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     jQuery("#register-form").validationEngine(); 
    }); 
</script> 
} 

layout.cshtml मेरे पास में ...

"@RenderSection("Scripts", false)". 

यह प्रारंभिक पेज (पेज जो पहले प्रस्तुत करना) के लिए काम करता है, लेकिन जब यह अन्य पन्नों तो अनुभाग के लिए "ActionLink" के माध्यम से जुड़े उन पृष्ठों में लिखी लिपि काम नहीं कर रही हैं।

कोई विचार?

कृपया मदद करें, धन्यवाद।

उत्तर

1

मुझे एक ही समस्या थी। इसे हल करने के लिए मैं बस "स्क्रिप्ट" खंड से बचता हूं।

प्रत्येक पृष्ठ से @section Scripts{ हटाएं और पृष्ठ के अंत में अपना जेएस कोड डालें।

अपने उदाहरण के लिए, को </head> से पहले _Layout.cshtml में ले जाने के लिए सुनिश्चित करें। यह जब यह $(document).ready(function() {...

जाता गारंटी देगा कि jQuery भरी हुई है ================================== =============

यह क्यों होता है और अन्य समाधान के बारे में स्पष्टीकरण। http://lextell.com/blog/2012/10/23/script-section-is-not-rendered-in-asp-net-mvc-4-jquery-mobile-when-navigate-to-another-page-2/

+0

यह एक समस्या जब आप पहली बार एचटीएमएल लोड करने के लिए पृष्ठ के तल पर अपने सभी लिपियों ले, लेकिन अभी भी यह एक समाधान –

+6

-1 है: हालांकि इसकी एक पुराने जवाब में पाया गया कि Google का उपयोग करते समय, और यह वास्तव में समस्या के लिए एक बुरा/गलत जवाब है। चूंकि जावास्क्रिप्ट को पृष्ठ के निचले हिस्से में रखना वास्तव में अच्छा अभ्यास है ... मुझे लगता है कि समस्या यह थी कि अनुभाग आंशिक दृश्य, या किसी अन्य मुद्दे से पॉप्युलेट नहीं किया गया था। लेकिन यह कामकाज सिर्फ खराब है! यह भी देखें http://stackoverflow.com/questions/7556400/injecting-content-into- विशिष्ट-sections-from-a-partial-view-asp-net-mvc-3-with – MichaC

2

एरिक Bacallao की लाइन के बाद, मैं तुम्हें sugest करेंगे निम्नलिखित: URL.Content() का उपयोग कर .min.js ओ .js फ़ाइलों को लोड करने

से बचें। स्क्रिप्ट्स। रेंडर() प्रत्येक परिदृश्य में सही फ़ाइल का चयन करें (रिलीज में डीबग और .min.js में .js)।

संशोधित _Layout.cshtml इस प्रकार दिखाई देगा:

@Scripts.Render("~/bundles/jquery") 
    <script type="text/javascript"> 
     $(document).bind("mobileinit", function() { 
      $.mobile.ajaxEnabled = false; 
     }); 
    </script> 
    @Scripts.Render("~/bundles/jquerymobile") 
    @RenderSection("scripts", required: false) 

नोट: अक्षम करना jQuery के मोबाइल AJAX (यह करता है) की तरह एक पैच ... नहीं एक पूर्ण समाधान है! यूएक्स बहुत कुछ decresases।

0

क्या यह AJAX पोस्टबैक के कारण नहीं है?

मुझे विश्वास है कि यह हो रहा है कि डोम अजाक्सिफाइड क्षेत्र में बदल रहा है और डीओएम दस्तावेज़ के कारण घटनाओं को पुन: बाध्य नहीं कर रहा है। पहले से ही पृष्ठ लोड पर एक बार चल रहा है।

यह काम करने के लिए आपको आंशिक अद्यतन के बाद घटना में डीओएम के बंधन को फिर से शुरू करने की आवश्यकता होगी।

ऐतिहासिक रूप से यह हमेशा एएसपी.Net अपडेट पैनेल और docuemt.ready के साथ एक मुद्दा रहा है, इसके आसपास काम करने का तरीका कोड को पृष्ठ लोड() में रखना है क्योंकि इसे प्रत्येक पोस्टबैक कहा जाता है।

यह सुनिश्चित नहीं है कि यह एमवीसी के साथ काम करेगा हालांकि। अधिक जानकारी के लिए

चेकआउट इस http://www.dotnet-tricks.com/Tutorial/aspnet/D719120612-Difference-between-document.ready-and-window.onload-or-pageLoad.html

+0

यह वास्तव में काम करता है जब आप AJAX का उपयोग करते हैं और '@ स्क्रिप्ट स्क्रिप्ट {}' से जावास्क्रिप्ट ले जाएं –

0

मैं वास्तव में क्यों पता नहीं है और यह पता लगाने की अभी तक समय नहीं है, लेकिन मैं आज सुबह एक ही समस्या थी। ऐसा लगता है कि @section scripts cshtml दृश्य पृष्ठ की रूट पर रखे जाने पर काम नहीं कर रहा है।निम्नलिखित कोड फिक्स यह:

@{ 
    @section scripts { 
     @Scripts.Render("~/bundles/jqueryval") 
    } 
} 
संबंधित मुद्दे