আমি ভিউয়ের সাথে একই ফোল্ডারে কোনও ভিউ সম্পর্কিত জেএস ফাইলগুলিও রাখতে চেয়েছিলাম।
আমি এই থ্রেডে অন্যান্য সমাধানগুলি কাজ করতে সক্ষম হচ্ছিলাম না, সেগুলি ভেঙে গেছে তবে এমভিসিতে তাদের কাজ করার জন্য আমি খুব নতুন।
এখানে প্রদত্ত তথ্য এবং অন্যান্য বেশ কয়েকটি স্ট্যাক ব্যবহার করে আমি একটি সমাধান নিয়ে এসেছি যা:
- জাভাস্ক্রিপ্ট ফাইলটি একই ডিরেক্টরিতে যেমন দেখার সাথে যুক্ত হয় তেমনভাবে রাখার অনুমতি দেয়।
- স্ক্রিপ্ট ইউআরএলটি অন্তর্নিহিত শারীরিক সাইটের কাঠামোটি দেয় না
- স্ক্রিপ্ট ইউআরএলের শেষের স্ল্যাশ (/) দিয়ে শেষ করা উচিত নয়
- স্থিতিশীল সংস্থানগুলিতে হস্তক্ষেপ করে না, যেমন: /Scriptts/someFile.js এখনও কাজ করে
- সক্ষম হওয়ার জন্য রানআল ম্যানেজডমডিউলস ফরঅলরেইকেষ্টগুলির প্রয়োজন হয় না।
দ্রষ্টব্য: আমি এইচটিটিপি অ্যাট্রিবিউট রাউটিংও ব্যবহার করছি। এটা সম্ভব যে আমার আত্মায় যে রুটের ব্যবহার রয়েছে এটি এটিকে সক্ষম না করেই কাজ করার জন্য পরিবর্তন করা যেতে পারে।
নিম্নলিখিত উদাহরণ / ডিরেক্টরি কাঠামো দেওয়া:
Controllers
Views
উপরের উদাহরণ কাঠামোর সাথে একত্রে নীচে প্রদত্ত কনফিগারেশন পদক্ষেপগুলি ব্যবহার করে পরীক্ষা দেখার URL টি এর মাধ্যমে অ্যাক্সেস করা হবে: /Example/Testএবং জাভাস্ক্রিপ্ট ফাইলটির মাধ্যমে রেফারেন্স হবে:/Example/Scripts/test.js
পদক্ষেপ 1 - অ্যাট্রিবিউট রাউটিং সক্ষম করুন:
আপনার / app_start/RouteConfig.vb ফাইলটি সম্পাদনা করুন এবং routes.MapMvcAttributeRoutes()বিদ্যমান রুটগুলির ঠিক উপরে যুক্ত করুন ap ম্যাপরুট:
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Mvc
Imports System.Web.Routing
Public Module RouteConfig
Public Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
' Enable HTTP atribute routing
routes.MapMvcAttributeRoutes()
routes.MapRoute(
name:="Default",
url:="{controller}/{action}/{id}",
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
)
End Sub
End Module
পদক্ষেপ 2-আপনার সাইটটিকে চিকিত্সা এবং প্রক্রিয়া করার জন্য কনফিগার করুন / / কন্ট্রোলার / স্ক্রিপ্টগুলি
আপনার /Web.config ফাইলটি সম্পাদনা করুন, নিম্নলিখিতটি সিস্টেমে যুক্ত করুন we ওয়েবে সার্ভার -> ফাইলের হ্যান্ডলার বিভাগে:
<add name="ApiURIs-ISAPI-Integrated-4.0" path="*/scripts/*.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
এখানে এটি আবার প্রসঙ্গে:
<system.webServer>
<modules>
<remove name="TelemetryCorrelationHttpModule"/>
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler"/>
<remove name="ApplicationInsightsWebTracking"/>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
<add name="ApiURIs-ISAPI-Integrated-4.0" path="*/scripts/*.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
পদক্ষেপ 3 - আপনার কন্ট্রোলার ফাইলে নিম্নলিখিত স্ক্রিপ্ট ক্রিয়া ফলাফল যুক্ত করুন
- নিয়ামকের জন্য {নিয়ামক} নামের সাথে মিলানোর জন্য রুটের পাথ সম্পাদনা করতে ভুলবেন না, উদাহরণস্বরূপ এটি: <রুট (" উদাহরণ / স্ক্রিপ্ট / {ফাইলের নাম}")>
আপনার প্রতিটি কন্ট্রোলার ফাইলগুলিতে এটি অনুলিপি করতে হবে। আপনি যদি চান, সম্ভবত একক, এককালীন, রুট কনফিগারেশন হিসাবে এটি করার কোনও উপায় রয়েছে।
<Route("Example/Scripts/{filename}")>
Function Scripts(filename As String) As ActionResult
Dim ControllerName As String = System.Web.HttpContext.Current.Request.RequestContext.RouteData.Values("controller").ToString()
Dim filePath As String = Server.MapPath("~/Views/" & ControllerName & "/" & filename)
Return Content(System.IO.File.ReadAllText(filePath), "text/javascript")
End Function
প্রসঙ্গে, এটি আমার উদাহরণকন্ট্রোলআরভিবি ফাইল:
Imports System.Web.Mvc
Namespace myAppName
Public Class ExampleController
Inherits Controller
Function Test() As ActionResult
Return View()
End Function
<Route("Example/Scripts/{filename}")>
Function Scripts(filename As String) As ActionResult
Dim ControllerName As String = System.Web.HttpContext.Current.Request.RequestContext.RouteData.Values("controller").ToString()
Dim filePath As String = Server.MapPath("~/Views/" & ControllerName & "/" & filename)
Return Content(System.IO.File.ReadAllText(filePath), "text/javascript")
End Function
End Class
End Namespace
চূড়ান্ত নোটগুলি
টেস্ট.ভিবিএইচটিএমএল ভিউ / টেস্ট.জেএস জাভাস্ক্রিপ্ট ফাইলগুলির জন্য বিশেষ কিছু নেই এবং এখানে দেখানো হয়নি।
আমি আমার সিএসএস ভিউ ফাইলে রাখি তবে আপনি সহজেই এই সমাধানটিতে যুক্ত করতে পারেন যাতে আপনি আপনার সিএসএস ফাইলগুলিকে একইভাবে উল্লেখ করতে পারেন।