लेआउट का उपयोग करते समय दृश्य के अंदर स्क्रिप्ट जोड़ने के लिए कैसे


100

मैं एक जावास्क्रिप्ट संदर्भ शामिल करना चाहता हूं जैसे:

<script src="@Url.Content("~/Scripts/jqueryFoo.js")" type="text/javascript"></script>

यदि मेरे पास रेजर व्यू है, तो इसे लेआउट में जोड़ने के बिना इसे शामिल करने का उचित तरीका क्या है (मुझे केवल एक विशिष्ट दृश्य में इसकी आवश्यकता है, उन सभी को नहीं)

Aspx में, हम कंटेंट प्लेस होल्डर्स का उपयोग कर सकते हैं .. मैंने पुराने उदाहरणों में पाया कि aspx का उपयोग mvc में किया गया है, लेकिन रेजर व्यू में नहीं।


1
बस स्क्रिप्ट टैग को अपने विचार में जोड़ें।

1
मैं केवल अपने दृश्य में स्क्रिप्ट जोड़ना चाहता हूं, लेकिन जब मैं बनाए जाने वाले पृष्ठ पर स्रोत देखता हूं, तो यह <head> के बजाय html के <body> के अंदर स्क्रिप्ट टैग डालता है?
डेफेर्रा

अधिक हाल के ब्राउज़रों के लिए = "टेक्स्ट / जावास्क्रिप्ट" की जरूरत नहीं है
मार्क शुल्त्स

जवाबों:


170

निर्भर करता है कि आप इसे कैसे लागू करना चाहते हैं (यदि कोई विशिष्ट स्थान जिसे आप स्क्रिप्ट चाहते थे) तो आप @sectionअपने भीतर लागू कर सकते हैं _Layoutजो आपको संरचना को बनाए रखते हुए, दृश्य से अतिरिक्त स्क्रिप्ट जोड़ने में सक्षम करेगा। जैसे

_Layout

<!DOCTYPE html>
<html>
  <head>
    <title>...</title>
    <script src="@Url.Content("~/Scripts/jquery.min.js")"></script>
    @RenderSection("Scripts",false/*required*/)
  </head>
  <body>
    @RenderBody()
  </body>
</html>

राय

@model MyNamespace.ViewModels.WhateverViewModel
@section Scripts
{
  <script src="@Url.Content("~/Scripts/jqueryFoo.js")"></script>
}

नहीं तो जो तुम्हारे पास है वह ठीक है। यदि आप इसे "इनलाइन" नहीं मानते हैं जो कि आउटपुट था, तो आप <script>दृश्य के भीतर घोषणा को रख सकते हैं।


3
BTW, अनुभाग अनिवार्य रूप से आपके सामग्री विस्थापित हैं जिनका आप उल्लेख कर रहे थे। डिफ़ॉल्ट MVC वेब प्रोजेक्ट देखें और वे पृष्ठ पर एक शीर्षक कैसे रखें।
ब्रैड क्रिस्टी

धन्यवाद। यह वही था जो मैं ढूंढ रहा था - लेकिन क्या यह रेंडरसेन के बिना ऐसा करना संभव है? आप कहते हैं कि 'आपके पास जो ठीक है' - लेकिन मेरे पास अभी तक कुछ भी नहीं है ... मैंने .cshtml के शीर्ष पर स्क्रिप्ट संदर्भ डालने की कोशिश की, लेकिन परिणाम यह है कि संदर्भ <body> में हैं, लेकिन उन्हें चाहिए सिर में हो
dferraro

3
@ डफ़र्रो: फिर आपको RenderSection("Scripts")अपने लेआउट में जोड़ना होगा (जैसे आप एक प्लेसहोल्डर होंगे) और फिर @section Scripts {}दृश्य के भीतर परिभाषित करें । कुछ बिंदु पर "मास्टर" (_layout) के लिए एक संशोधन आसन्न है। आप किसी चीज़ को केवल एक दृश्य में परिभाषित नहीं कर सकते हैं और इसे " <head>मेरे लिए इसे जगह दें" बता सकते हैं (जब तक कि आप एक स्क्रिप्ट
ब्रैड क्रिस्टी

2
+1। इसके अलावा @dferraro एक बेहतर बात यह होगी कि संदर्भों को jQuery और रेंडरसेन </ body> से पहले रखा जाए और सिर में बिल्कुल भी नहीं। पुराना लेकिन प्रासंगिक वाचन: developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5
माइकस्मिथडेव

1
यदि आपकी स्क्रिप्ट Scriptsफ़ोल्डर में नहीं है, तो आपको इसकी पहुँच भी सक्षम करने की आवश्यकता हो सकती है: stackoverflow.com/questions/24763493/…
होमर

12

यदि आप रेजर व्यू इंजन का उपयोग कर रहे हैं तो _Layout.cshtml फ़ाइल को संपादित करें। शीर्ष लेख अनुभाग में पाद लेख में @ Scripts.Render ("~ / बंडलों / jquery") को स्थानांतरित करें और जब आप चाहें तो जावास्क्रिप्ट / jquery कोड लिखें:

@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
    $(document).ready(function () {
        var divLength = $('div').length;
        alert(divLength);
    });
</script>

0

आप स्क्रिप्ट टैग जोड़ सकते हैं जैसे नीचे दिए गए क्लाइंट साइड सत्यापन करते समय हम asp.net में कैसे उपयोग करते हैं।

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<script type="text/javascript" src="~/Scripts/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    $(function () {
       //Your code
    });
</script>

अधिक हाल के ब्राउज़रों type="text/javascript"की आवश्यकता नहीं है
मार्क शुलथिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.