我正在尝试将此扫描软件合并到应用程序中。
它包含了所有必要的文件夹.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")';
据我所知,您不能~
在单独的 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");
参考:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句