Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在MVC中引用JS配置文件内的相对路径_Javascript_Asp.net Mvc - Fatal编程技术网

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");