没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉炜炜|2024-11-11 17:22:11.980|阅读 27 次
概述:在 Web 应用中,文档编辑器和查看器通常具有不同的角色,编辑器用于创建和编辑文档,通常占据整个视图。不过,有些应用会将两者集成到同一个视图中,以便进行编辑、审阅和模板预览。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
TX Text Control .NET Server for ASP.NET是一款Web应用程序的文档处理控件,包括用于 ASP.NET、ASP.NET Core 和 Angular 的文档编辑和查看的客户端包。目前TX Text Control .NET Server for ASP.NET 支持 .NET 5、.NET 6 和 .NET 4.8 在 Visual Studio 2019 和 2022 中创建 ASP.NET 应用程序。
通常,文档编辑器和文档查看器具有不同的使用情况,并在 Web 应用程序中的不同视图中使用。在大多数情况下,编辑器嵌入在应用程序中,用于在协作过程中创建模板、编辑文档或审阅文档。在这些情况下,编辑器占据了大部分视图,以便用户可以专注于编辑文档。
但是,有多个应用程序在同一个视图中使用文档编辑器和文档查看器:
如果你按照文档中所述使用 Razor 中的 Html 助手(该助手在编辑器和查看器中均有实现),则会收到如下错误:
ControlsFactory 不包含“DocumentViewer”的定义,并且找不到接受“ControlsFactory”类型第一个参数的可访问扩展方法“DocumentViewer”(您是否缺少使用指令或程序集引用?)
上述错误可能来自 TextControl 或 DocumentViewer,具体取决于向 using 指令添加了哪个命名空间。
创建实例
除了使用 Razor Html 帮助器之外,您还可以在代码中创建一个实例来解决此问题。以下代码片段显示了如何创建文档查看器和文档编辑器的实例:
@using TXTextControl.Web.MVC @Html.TXTextControl().TextControl(settings => { settings.Dock = TXTextControl.Web.DockStyle.Fill; }).LoadDataFromJson(File.ReadAllText("data.json")).Render() @{ var settings = new TXTextControl.Web.MVC.DocumentViewer.DocumentViewerSettings(); settings.Dock = TXTextControl.Web.MVC.DocumentViewer.DocumentViewerSettings.DockStyle.Fill; settings.ShowThumbnailPane = false; var viewer = new TXTextControl.Web.MVC.DocumentViewer.DocumentViewer(settings); @viewer.Render() }
如您所见,文档编辑器像往常一样使用 Html 帮助程序类添加。文档查看器在代码中实例化,并Render显式调用该方法以在视图中呈现查看器。这允许您在同一视图中创建两个组件。
用例:实时预览
在同一视图中使用文档编辑器和文档查看器的一个用例是在用户键入时提供文档的实时预览。这对于需要在用户编辑文档时提供实时反馈的应用程序非常有用。
设想这样一个场景:用户创建了一个包含合并字段、重复块和格式的邮件合并模板。当用户编辑或输入文本时,空闲计时器会运行并等待用户空闲。如果用户未更改任何内容,则文档会保存并与服务器端的实时数据合并,然后加载到文档查看器中进行预览。
这使得用户可以更好地了解合并的结果,并且无需在编辑器中预览文档即可设计模板。
空闲时预览更新
空闲定时器
此解决方案的代码非常简单。实现为 JavaScript 空闲计时器,setTimeout将在事件发生时中止changed。达到空闲状态时,将保存模板并将其发送到Merge端点。然后将返回的合并文档加载到文档查看器中。
TXTextControl.addEventListener("textControlLoaded", e => { let idleTimeout; function onIdle() { mergeTemplate(); } function resetIdleTimer() { clearTimeout(idleTimeout); idleTimeout = setTimeout(onIdle, 2000); // Set idle time to 2 seconds } // Attach event listener to TXTextControl's "changed" event TXTextControl.addEventListener("changed", e => { resetIdleTimer(); }); // Initialize the idle timer resetIdleTimer(); }); function mergeTemplate() { TXTextControl.saveDocument(TXTextControl.StreamType.InternalUnicodeFormat, document => { // call web api endpoint with ajax $.ajax({ url: '/mailmerge/merge', type: 'POST', contentType: 'application/json', data: JSON.stringify(document.data), success: function (data) { // load the document into the viewer TXDocumentViewer.loadDocument(data); } }); }) }
合并端点
服务器端合并端点只是采用模板并使用邮件合并 将 JSON 数据合并到其中以创建返回给客户端并加载到文档查看器的预览文档。
[HttpPost] public string Merge([FromBody] string Template) { byte[] template = System.Convert.FromBase64String(Template); using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl()) { tx.Create(); tx.Load(template, TXTextControl.BinaryStreamType.InternalUnicodeFormat); MailMerge mailMerge = new MailMerge(); mailMerge.TextComponent = tx; string jsonData = System.IO.File.ReadAllText("data.json"); mailMerge.MergeJsonData(jsonData); byte[] results; tx.Save(out results, TXTextControl.BinaryStreamType.InternalUnicodeFormat); return System.Convert.ToBase64String(results); } }
结论
对于需要在用户编辑文档时实时反馈的应用程序而言,在同一视图中使用文档编辑器和文档查看器是一项非常强大的功能。通过在代码中创建文档查看器的实例,您可以轻松地将此功能添加到您的应用程序中。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都网本文将探索如何在DevExpress Blazor DxAiChat组件中启用函数调用,欢迎下载最新版组件体验!
从事建筑、工程、施工行业,将 DGN 文件转换为 DXF 格式都能确保与各种 CAD 应用程序兼容并无缝集成。Aspose.CAD 能够简化转换过程,提供强大的功能和灵活性。
本教程将为大家介绍如何使用MyEclipse创建一个WEB项目,欢迎下载最新版IDE体验!
本文主要介绍如何使用DevExpress WPF Grid控件实现节点(Nodes)的遍历,欢迎下载最新版组件体验!
帮您创建在Windows,Linux和Mac上运行的Web应用程序
Essential Studio for WPF帮您轻松创建利于分析且高性能Windows应用程序的WPF界面控件
Essential Studio Enterprise Edition企业级界面开发工具包,包含800多个.NET和JavaScript平台的组件和框架。
Essential Studio for Windows Forms功能最全面的Windows Forms界面控件包,帮您创建高性能Windows应用程序
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号