दिलचस्प पोस्ट
एंड्रॉइड में एडिट टेस्ट दृश्य में बहु-लाइन की अनुमति दें? मैं संपादन टेक्स्ट में सुझाव कैसे बदल सकता हूं? क्यों ढलाई होना चाहिए? IOS में पहले से ही चल रहे कार्य के लिए startBackgroundTaskWithExpirationHandler का उपयोग कैसे करें मैं एक वेक्टर में किसी आइटम का सूचक कैसे प्राप्त करूं? ORA-00979 अभिव्यक्ति द्वारा एक समूह नहीं है java.util.Date को XMLGregorianCalendar Django केवल एक बार शुरू होता है जब कोड निष्पादित करें? क्या "\ d" में regex एक अंक का मतलब है? रेट्रोफ़िट में डायनामिक जेसन को कैसे नियंत्रित किया जाए? किसी दिए गए पक्ष अनुपात के साथ साजिश को बचाएं Bitfields में क्यों एक बिट endianness मुद्दा है? ऊपर के मूल्य के साथ किसी भी खाली कोशिकाओं को भरना Jboss सर्वर शुरू करने में त्रुटि मेरी कस्टम छवि के साथ फेसबुक लॉगइन बटन को कैसे बदला जाए

एएसपी.नेट एमवीसी अनुप्रयोग में देखने-विशिष्ट जावास्क्रिप्ट फाइलें कहां रखनी हैं?

ASP.NET MVC अनुप्रयोग में देखने-विशिष्ट जावास्क्रिप्ट फ़ाइलों को रखने के लिए सबसे अच्छी जगह (कौन सी फ़ोल्डर, आदि) क्या है?

मेरी परियोजना को व्यवस्थित रखने के लिए, मैं वास्तव में उन्हें देखने के .aspx फ़ाइलों के साथ साइड-बाय-साइड रखने में सक्षम होना चाहता हूं, लेकिन मुझे उनको संदर्भ देने का एक अच्छा तरीका नहीं मिला है जब बिना ~ / दृश्य को उजागर किया गया / कार्य / फ़ोल्डर संरचना क्या यह वाकई एक बुरी बात है कि फ़ोल्डर संरचना रिसाव का ब्योरा देना है?

विकल्प उन्हें ~ / स्क्रिप्ट या ~ / सामग्री फ़ोल्डरों में डाल देना है, लेकिन एक छोटी सी जलन है क्योंकि अब मुझे फ़ाइल नाम संघर्षों के बारे में चिंतित होना है। यह एक चिड़चिड़ा है जो मुझे मिल सकता है, हालांकि, अगर यह "सही बात है"।

Solutions Collecting From Web of "एएसपी.नेट एमवीसी अनुप्रयोग में देखने-विशिष्ट जावास्क्रिप्ट फाइलें कहां रखनी हैं?"

पुरानी सवाल है, लेकिन मैं अपना जवाब देना चाहता हूं, किसी और के लिए यह तलाश है।

मैं भी विचार फ़ोल्डर के तहत मेरे विशिष्ट विशिष्ट जेएस / सीएसएस फाइलों को देखना चाहता हूं, और यहां बताया कि मैंने इसे कैसे किया है:

वेब। कॉन्फिग फ़ोल्डर में / दृश्यों की जड़ में आप फ़ाइलों को सेवा करने के लिए वेबसर्वर को सक्षम करने के लिए दो अनुभागों को संशोधित करने की आवश्यकता है:

<system.web> <httpHandlers> <add path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> <!-- other content here --> </system.web> <system.webServer> <handlers> <remove name="BlockViewHandler"/> <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> <!-- other content here --> </system.webServer> 

फिर अपने दृश्य फ़ाइल से आप अपेक्षा करते हुए यूआरएल को संदर्भित कर सकते हैं:

 @Url.Content("~/Views/<ControllerName>/somefile.css") 

यह .js और .css फ़ाइलों की सेवा करने की अनुमति देगा, और कुछ और की सेवा करने से मना करेगा

इसे प्राप्त करने का एक तरीका अपनी खुद की ActionInvoker को आपूर्ति करना है नीचे दिए गए कोड का उपयोग करके, आप अपने नियंत्रक के निर्माता में जोड़ सकते हैं:

 ActionInvoker = new JavaScriptActionInvoker(); 

अब, जब भी आप अपने दृश्य के पास एक .js फ़ाइल .js हैं:

यहां छवि विवरण दर्ज करें

आप सीधे इसे एक्सेस कर सकते हैं:

 http://yourdomain.com/YourController/Index.js 

नीचे स्रोत है:

 namespace JavaScriptViews { public class JavaScriptActionDescriptor : ActionDescriptor { private string actionName; private ControllerDescriptor controllerDescriptor; public JavaScriptActionDescriptor(string actionName, ControllerDescriptor controllerDescriptor) { this.actionName = actionName; this.controllerDescriptor = controllerDescriptor; } public override object Execute(ControllerContext controllerContext, IDictionary<string, object> parameters) { return new ViewResult(); } public override ParameterDescriptor[] GetParameters() { return new ParameterDescriptor[0]; } public override string ActionName { get { return actionName; } } public override ControllerDescriptor ControllerDescriptor { get { return controllerDescriptor; } } } public class JavaScriptActionInvoker : ControllerActionInvoker { protected override ActionDescriptor FindAction(ControllerContext controllerContext, ControllerDescriptor controllerDescriptor, string actionName) { var action = base.FindAction(controllerContext, controllerDescriptor, actionName); if (action != null) { return action; } if (actionName.EndsWith(".js")) { return new JavaScriptActionDescriptor(actionName, controllerDescriptor); } else return null; } } public class JavaScriptView : IView { private string fileName; public JavaScriptView(string fileName) { this.fileName = fileName; } public void Render(ViewContext viewContext, TextWriter writer) { var file = File.ReadAllText(viewContext.HttpContext.Server.MapPath(fileName)); writer.Write(file); } } public class JavaScriptViewEngine : VirtualPathProviderViewEngine { public JavaScriptViewEngine() : this(null) { } public JavaScriptViewEngine(IViewPageActivator viewPageActivator) : base() { AreaViewLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.js", "~/Areas/{2}/Views/Shared/{0}.js" }; AreaMasterLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.js", "~/Areas/{2}/Views/Shared/{0}.js" }; AreaPartialViewLocationFormats = new [] { "~/Areas/{2}/Views/{1}/{0}.js", "~/Areas/{2}/Views/Shared/{0}.js" }; ViewLocationFormats = new[] { "~/Views/{1}/{0}.js", "~/Views/Shared/{0}.js" }; MasterLocationFormats = new[] { "~/Views/{1}/{0}.js", "~/Views/Shared/{0}.js" }; PartialViewLocationFormats = new[] { "~/Views/{1}/{0}.js", "~/Views/Shared/{0}.js" }; FileExtensions = new[] { "js" }; } public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { if (viewName.EndsWith(".js")) viewName = viewName.ChopEnd(".js"); return base.FindView(controllerContext, viewName, masterName, useCache); } protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath) { return new JavaScriptView(partialPath); } protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { return new JavaScriptView(viewPath); } } } 

आप डेव्स के सुझाव को अवरुद्ध कर सकते हैं और केवल .cshtml ब्लॉक कर सकते हैं

 <httpHandlers> <add path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> 

मुझे पता है कि यह एक पुराना विषय है, लेकिन मेरे पास कुछ चीजें हैं जो मैं जोड़ना चाहूंगा। मैंने डेव्स के उत्तर की कोशिश की लेकिन स्क्रिप्ट फ़ाइलों को लोड करने की कोशिश करते समय यह 500 त्रुटि फेंक रहा था, इसलिए मुझे इसे web.config पर जोड़ना पड़ा:

 <validation validateIntegratedModeConfiguration="false" /> 

system.webServer को यहां मेरे पास क्या है, और मैं इसे काम करने में सक्षम था:

 <system.webServer> <handlers> <remove name="BlockViewHandler"/> <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> <validation validateIntegratedModeConfiguration="false" /> </system.webServer> <system.web> <compilation> <assemblies> <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> </compilation> <httpHandlers> <add path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> </system.web> 

सत्यापन के बारे में अधिक जानकारी यहां दी गई है: https://www.iis.net/configreference/system.webserver/validation

यह कोड web.config फ़ाइल में system.web टैग के अंदर जोड़ें

 <handlers> <remove name="BlockViewHandler"/> <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers>