MVC中JS配置文件中的引用相对路径

汤姆塞立克

我正在尝试将此扫描软件合并到应用程序中。

它包含了所有必要的文件夹.js.css文件和二进制文件被调用Resources

在我的 MVC 应用程序中 - 我已将Resources文件放在我的Scripts文件夹中。

在我的.cshtml,我有以下内容:

@section scripts {
    <script src="~/Scripts/Resources/dynamsoft.webtwain.config.js"></script>
    <script src="~/Scripts/Resources/dynamsoft.webtwain.initiate.js"></script>
}

成功加载脚本。

我面临的问题是脚本本身引用Resources文件夹内的相对路径

dynamsoft.webtwain.config.js- 您可以设置资源文件夹的路径 - 我的设置如下:

Dynamsoft.WebTwainEnv.ResourcesPath = '~/Scripts/Resources';

但是,当页面加载时 - 我收到一些文件的 404 错误,因为它试图从字面上解释路径:

404 资源文件

我也尝试过以下但没有运气:

Dynamsoft.WebTwainEnv.ResourcesPath = '@Url.Content("~/Scripts/Resources")';

在此处输入图片说明

山本哲也

据我所知,您不能~在单独的 JS 文件中使用以波浪号 ( )开头的相对路径,因为@Url.Content()helper 和 ASP.NET 相对路径仅在 Razor 视图页面内有效,但您可以通过在 JS全局中创建根路径来传递相对路径范围(即 Razor 视图页面的<script>标签)像这样:

<script>
    var baseUrl = '@Url.Content("~")';
</script>

然后您可以使用该变量在 JS 文件中包含路径:

// custom JS file
if (typeof baseUrl !== 'undefined') {
    Dynamsoft.WebTwainEnv.ResourcesPath = baseUrl + '/Scripts/Resources';
}

或者简单地提及完整路径并传递它:

@* Razor page *@
<script>
    var resourcesPath = '@Url.Content("~/Scripts/Resources")';
</script>

// custom JS file
if (typeof resourcesPath !== 'undefined') {
    Dynamsoft.WebTwainEnv.ResourcesPath = resourcesPath;
}

另一种选择是将自定义 JS 视图引擎与 JS 脚本的文件处理程序一起使用,如下例所示:

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

参考:

@Url.Content 使用 ASPNET MVC 3 和 Razor 在单独的 javascript 文件中

从控制器返回经过剃刀解析的 Javascript 作为 ViewResult

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

配置文件中的相对路径

来自分类Dev

HTML文件中的相对路径

来自分类Dev

如何制作定义了相对路径的python配置文件,但是当其他目录中的脚本导入配置时,路径正确吗?

来自分类Dev

Eclipse CDT中包含文件的相对路径

来自分类Dev

从Qt中的文件获取相对路径

来自分类Dev

文件操作在相对路径中不起作用

来自分类Dev

如何从相对路径的MediaStore中读取文件?

来自分类Dev

在.vbs文件中创建相对路径

来自分类Dev

python中的相对路径几个文件夹

来自分类Dev

在相对路径中运行批处理文件?

来自分类Dev

从jar文件中获取相对路径

来自分类Dev

spring boot中不取文件相对路径

来自分类Dev

节点js中的相对路径问题

来自分类Dev

Django设置中的相对路径

来自分类Dev

Xlwings Pythonpath中的相对路径

来自分类Dev

CodeLite:makefile中的相对路径

来自分类Dev

在Twig中捆绑的相对路径

来自分类Dev

jsp中的相对路径

来自分类Dev

Flask中的相对路径

来自分类Dev

在tomcat中传递相对路径

来自分类Dev

Xlwings Pythonpath中的相对路径

来自分类Dev

doctests 中的稳健相对路径

来自分类Dev

在 Python 中调用相对路径

来自分类Dev

Aspnet MVC中的相对路径和绝对路径有什么区别?

来自分类Dev

Aspnet MVC中的相对路径和绝对路径有什么区别?

来自分类Dev

为什么本地文件中的相对路径被转换为绝对路径?

来自分类Dev

PHP中相对路径和锚文件的绝对路径

来自分类Dev

Java文件路径相对化与相对路径中的跳转

来自分类Dev

无法通过Express到达父级兄弟姐妹文件夹中js文件的相对路径?