Javascript 在MVC中引用JS配置文件内的相对路径
我正在尝试将软件合并到应用程序中 包含所有必需的Javascript 在MVC中引用JS配置文件内的相对路径,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我正在尝试将软件合并到应用程序中 包含所有必需的.js、.css和二进制文件的文件夹称为资源 在我的MVC应用程序中,我已将资源文件放在我的脚本文件夹中 在my.cshtml中,我有以下内容: @section scripts { <script src="~/Scripts/Resources/dynamsoft.webtwain.config.js"></script> <script src="~/Scripts/Resources/dynam
.js
、.css
和二进制文件的文件夹称为资源
在我的MVC应用程序中,我已将资源
文件放在我的脚本
文件夹中
在my.cshtml
中,我有以下内容:
@section scripts {
<script src="~/Scripts/Resources/dynamsoft.webtwain.config.js"></script>
<script src="~/Scripts/Resources/dynamsoft.webtwain.initiate.js"></script>
}
据我所知,您不能在单独的JS文件中使用以波浪号(
~
)开头的相对路径,因为@Url.Content()
helper和ASP.NET相对路径只能在Razor view页面中工作,但您可以通过在JS全局范围中创建根路径来传递相对路径(即Razor view页面的
标记)如下所示:
<script>
var baseUrl = '@Url.Content("~")';
</script>
或者简单地提及完整路径并传递它:
@* Razor page *@
<script>
var resourcesPath = '@Url.Content("~/Scripts/Resources")';
</script>
// custom JS file
if (typeof resourcesPath !== 'undefined') {
Dynamsoft.WebTwainEnv.ResourcesPath = resourcesPath;
}
参考资料:
据我所知,您不能在单独的JS文件中使用以波浪号(
~
)开头的相对路径,因为@Url.Content()
helper和ASP.NET相对路径只能在Razor view页面中工作,但您可以通过在JS全局范围中创建根路径来传递相对路径(即Razor view页面的
标记)如下所示:
<script>
var baseUrl = '@Url.Content("~")';
</script>
或者简单地提及完整路径并传递它:
@* Razor page *@
<script>
var resourcesPath = '@Url.Content("~/Scripts/Resources")';
</script>
// custom JS file
if (typeof resourcesPath !== 'undefined') {
Dynamsoft.WebTwainEnv.ResourcesPath = resourcesPath;
}
参考资料:
将完整路径称为
var resourcesPath='@Url.Content(“~/Scripts/Resources”);
有效-谢谢!非常好的答案,值得更多的投票!将完整路径称为var resourcesPath='@Url.Content(“~/Scripts/Resources”);
有效-谢谢!非常好的答案,值得更多的投票!
// custom JS engine
public class CustomJSEngine : BuildManagerViewEngine
{
public CustomJSEngine()
{
ViewLocationFormats = new[]
{
"~/Scripts/{0}.js",
"~/Scripts/Resources/{0}.js"
};
FileExtensions = new[]
{
"js"
};
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
var view = new RazorView(controllerContext, viewPath,
layoutPath: masterPath, runViewStartPages: true, viewStartFileExtensions: FileExtensions,
viewPageActivator: ViewPageActivator);
return view;
}
}
// put these lines below inside Application_Start()
RazorCodeLanguage.Languages.Add("js", new CSharpRazorCodeLanguage());
ViewEngines.Engines.Add(new CustomJSEngine());
// add this line if necessary
WebPageHttpHandler.RegisterExtension(".js");