6

मैं एएसपी.नेट एमवीसी 2 (आरटीएम) संपादक टेम्पलेट में जावास्क्रिप्ट ब्लॉक को सही तरीके से कैसे पंजीकृत करूं?एमवीसी 2 संपादक टेम्पलेट्स में जावास्क्रिप्ट और सीएसएस को उचित रूप से पंजीकृत करना

मेरे द्वारा निर्धारित विशिष्ट परिदृश्य यह है कि मैं अपने मानक डेटाटाइम पिकर के लिए Dynarch JSCal2 DateTimePicker का उपयोग करना चाहता हूं, लेकिन यह प्रश्न सामान्य रूप से किसी भी पुन: प्रयोज्य जावास्क्रिप्ट पैकेज के लिए है। मैं अपने टेम्पलेट अब ठीक से काम किया है लेकिन यह मेरी जे एस है और सीएसएस मेरे मालिक पेज में शामिल हैं और अगर मैं वास्तव में उन्हें जरूरत है मैं नहीं बल्कि केवल इन बातों में शामिल हैं:

<link rel="stylesheet" type="text/css" href="../../Content/JSCal2-1.7/jscal2.css" /> 
<link rel="stylesheet" type="text/css" href="../../Content/JSCal2-1.7/border-radius.css" /> 
<script type="text/javascript" src="../../Scripts/JSCal2-1.7/jscal2.js"></script> 
<script type="text/javascript" src="../../Scripts/JSCal2-1.7/lang/en.js"></script> 

तो जाहिर है मैं तो बस में इन पंक्तियों डाल सकता है मेरी टेम्पलेट, लेकिन फिर यदि मेरे पास एक स्क्रीन है जिसमें 5 डेटटाइम पिकर्स हैं, तो इस सामग्री को 5 बार डुप्लिकेट किया जाएगा जो आदर्श नहीं होगा। वैसे भी, मैं अभी भी अपने पृष्ठ के <head> में इस कोड को ट्रिगर करने के लिए अपना व्यू टेम्पलेट चाहता हूं।

हालांकि यह पूरी तरह से मेरी इस सवाल पूछने से संबंधित नहीं है, मैं इस मामले में सोचा था कि मैं यहाँ (अभी तक) पर मेरे टेम्पलेट साझा करते हैं यह किसी भी तरह से उपयोगी होता है:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %> 

<%= Html.TextBoxFor(model => Model) %> 
<input type="button" id="<%= ViewData.TemplateInfo.GetFullHtmlFieldId("cal-trigger") %>" value="..." /> 

<script type="text/javascript"> 
    var <%= ViewData.TemplateInfo.GetFullHtmlFieldId("cal") %> = Calendar.setup({ 
     trigger  : "<%= ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty) %>", 
     inputField : "<%= ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty) %>", 
     onSelect  : function() { this.hide(); }, 
     showTime  : 12, 
     selectionType : Calendar.SEL_SINGLE, 
     dateFormat : '%o/%e/%Y %l:%M %P' 
    }); 
</script> 
+0

अभी तक, मैं बस अपने मास्टर पेज पर सभी संभावित संसाधन जोड़ रहा हूं। मैं अभी तक संसाधनों का प्रबंधन नहीं करना चाहता हूं कि प्रबंधन अभी भी गलत जगह पर होगा। – Jaxidian

+0

संबंधित प्रश्न: http://stackoverflow.com/questions/2877927 –

+0

संबंधित प्रश्न: http://stackoverflow.com/questions/2852928 –

उत्तर

4

मैं आमतौर पर एक स्क्रिप्ट प्लेसहोल्डर जोड़ने

मास्टर:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <title></title> 
    <asp:ContentPlaceHolder ID="Styles" runat="server" /> 
</head> 
<body> 
    <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 
    <script type="text/javascript" src="scriptAvailableToAllPages.js"></script> 
    <asp:ContentPlaceHolder ID="Scripts" runat="server" /> 
</body> 
</html> 

दृश्य:

मेरे मालिक पेज कि देखा गया ओवरराइड की गई है में
<%@ Page Language="C#" 
     MasterPageFile="~/Views/Shared/Site.Master" 
     Inherits="System.Web.Mvc.ViewPage<Ns.MyModel>" %> 

<asp:Content ID="indexScripts" ContentPlaceHolderID="Scripts" runat="server"> 
    <script type="text/javascript" src="specific.js"></script> 
</asp:Content> 

<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <% using (Html.BeginForm()) { %> 
     <%= Html.EditorFor(x => x.Date1) %> 
     <%= Html.EditorFor(x => x.Date2) %> 
     <%= Html.EditorFor(x => x.Date3) %> 
     <input type="submit" value="OK" /> 
    <% } %> 
</asp:Content> 

ध्यान दें कि संपादक टेम्पलेट मॉडल के तीन अलग-अलग गुणों के लिए कैसे शामिल है लेकिन आवश्यक स्क्रिप्ट केवल एक बार शामिल हैं।

+0

समझ में आता है, लेकिन मेरे संपादक टेम्पलेट्स उसमें कैसे हुक करेंगे? – Jaxidian

+0

संपादक टेम्पलेट्स पृष्ठ में शामिल करने के लिए कुछ स्क्रिप्ट मॉड्यूल/प्लगइन पर भरोसा करते हैं। आपके मामले में मुझे लगता है कि इस स्क्रिप्ट में 'कैलेंडर.सेटअप' फ़ंक्शन शामिल है। मुख्य दृश्य इस स्क्रिप्ट को शामिल करने का ख्याल रखता है। उदाहरण में मैंने प्रदान की है कि सभी स्क्रिप्ट पृष्ठ के अंत में शामिल हैं (मास्टर फ़ाइल देखें) लेकिन यदि आप चाहें तो आप उन्हें 'हेड' सेक्शन में ले जा सकते हैं। –

+3

मैं नहीं चाहता कि मेरे विचार इन स्क्रिप्ट से निपटने के लिए हों, हालांकि। मैं चाहता हूं कि मेरे विचार मेरे टेम्पलेट्स के कार्यान्वयन के साथ पूरी तरह से अव्यवस्थित हों। मेरी योजना इस गैर-आदर्श जावास्क्रिप्ट "नियंत्रण" का उपयोग करना है जब तक कि मेरे डेटाटिमेकर के रूप में उपयोग करने के लिए मेरे पास बेहतर JQuery या MVC- आधारित "नियंत्रण" न हो। और जब वह समय आता है, तो मैं इस एक संपादक टेम्पलेट के अलावा किसी भी फाइल को संपादित नहीं करना चाहता हूं। एसओसी यहां लक्ष्य है - मेरे विचार को यह जानने की आवश्यकता नहीं है कि मेरा टेम्पलेट किस जेएस फाइलों पर निर्भर करता है। – Jaxidian

3

मैं एक सरल स्क्रिट बनाता हूं इसे संभालने के लिए प्रबंधित करें, दुर्भाग्य से मैंने इसे सीएसएस के लिए नहीं किया है Asp.Net MVC Manager for javascript include and Css files देखें। दुर्भाग्यवश, यह सीएसएस के लिए काम नहीं कर रहा है, जावास्क्रिप्ट के लिए मैं बस उन्हें अपनी मास्टर फाइल के नीचे था, लेकिन सीएसएस हेड टैग में होना चाहिए, मुझे अभी तक ऐसा करने का कोई तरीका नहीं मिला है ...

लेकिन इसका उपयोग करके मैं एक कस्टम HtmlHelper, डेटपिकर में स्क्रिप्ट प्राप्त करने में सक्षम हूं जिसे मैं टेम्पलेट DateTime.ascx के साथ उपयोग करता हूं।

+0

इस जानकारी के लिए धन्यवाद! ऐसा लगता है कि आप वही करना चाहते हैं जो मैं करना चाहता हूं। मैं इसमें देखूंगा और मेरे पास जो भी सुधार हो सकता है। – Jaxidian

+0

इसे आज़माने के बाद, मैं बस काम करने के लिए CSSManager नहीं प्राप्त कर सकता और मुझे नहीं लगता कि यह कैसे संभव है। – Jaxidian

+0

मैंने अपनी प्रतिक्रिया में यही कहा है, यह सीएसएस के लिए अधिक जटिल है ... और मैंने इसे अपने कोड में नहीं किया है, यह केवल तभी काम कर रहा है जब आप इसे –

1

telerik web asset manager आपको जो भी चाहिए वो पूरा करने और खुले स्रोत के लिए अनुमति देता है।

+0

अच्छा! धन्यवाद! – Jaxidian

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

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