Grid++Report的几点总结
一.同事解决方案:
1.在View文件夹下建立报表文件A,用来作为报表呈现的载体。这个页面负责加载报表模板与加载数据源。其中报表模板由于后缀名为grf,在MVC中不做任何修改的情况下,系统会做路由处理,提示404错误,因此,同事将模板后缀名修改为jpg,得以顺利调用。数据源加载,同事的思路是通过aspx页面实现,具体来说,在aspx页面中定义ViewData,在controller中对ViewData进行赋值,从而输出view。总体上是利用了aspx页面作为数据源呈现页面,而利用Mvc的controller向这个呈现页面填充数据实现为报表提供数据源。问同事为何不用cshtml页面,答曰:会出错。
二.优化方案:
首先将aspx页面替换为cshtml页面,也在其中定义ViewData,发现点击报表页面的查询按钮,页面即报错,IE崩溃。经过与原有页面数据对比,发现原来是MVC将双引号进行了转义所致。因此,调用MVC自带的Html.Raw方法,阻止其转义。由此,将aspx页面问题解决。
利用cshtml页面,有两种做法:
1.直接在cshtml页面定义ViewData,在controller中返回View,但是此时返回的页面是带有母版页的页面,因此,必须在cshtml页面中声明,Layout=null。
2.在cshtml页面中仅仅定义ViewData,不涉及Layout声明。在Controller中直接返回PartialView即可。
关于模板文件的后缀名修改问题,更是简单,在config中,将*.grf文件声明为静态文件即可。即添加以下代码即可解决。
1 | <add name= "Static Report" path= "*.grf" verb= "GET" type= "System.Web.StaticFileHandler" /> |
至此,将报表部分的开发顺畅了许多,再也不用烦修改报表模板文件后缀名、aspx页面等问题了。
更新:
不使用数据源页面及ViewData,直接通过API返回json数据更简单。经过测试,完美无误!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构