我正在尝试将这次扫描软件集成到应用程序中。
包含所有必需的.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错误,因为它试图从字面上解释路径:

我也尝试过以下几种方法,但没有运气:
Dynamsoft.WebTwainEnv.ResourcesPath = '@Url.Content("~/Scripts/Resources")';

发布于 2018-10-03 01:38:17
据我所知,您不能在单独的JS文件中使用以~开头的相对路径,因为@Url.Content()助手和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");参考文献:
https://stackoverflow.com/questions/52611640
复制相似问题