【发布时间】:2010-11-16 14:06:08
【问题描述】:
为了在 ASP.Net 中创建动态图表和图形,我已将每个图表的 (GDI+) 代码放置在单独的页面文件中 - 因此,如果只是在屏幕上显示图表,则运行图表页面的输出本身。
图表页面包含从 SQL Server 获取相关数据的代码,以及图表生成代码。然后将生成的图表对象保存到 Response.OutputStream。
我想要显示图表的内容页面提供了各种参数来确定将使用哪些数据来生成图表(例如用户 ID、项目 ID、从下拉列表中选择等)。 要将图表显示为内容页面的一部分,然后我在页面中放置一个图像对象,收集各种图表参数,并在后面的代码中将图像对象的 URL 设置为图表页面,以及添加的所有图表参数到查询字符串。
这很好用,除了一件事:当我在浏览器内容页面中显示的图表图像上单击鼠标右键时,我会得到一个“打开图像”选项,它会显示一个包含图表的页面本身(也许并不奇怪,因为它是用图表页面生成的)。但是,问题是在这个图表页面中,带有查询字符串的完整 URL 是可见的,这意味着用户可以更改查询字符串中的值,从而生成一个新图表。这是一个大问题,因为它可能使用户能够为他们不应访问的数据生成图表。
有没有办法避免这个问题,同时仍然使用这种“图表页面”方法来生成和显示动态图表?或者,我是否应该将动态生成的图像保存为文件,例如在磁盘上或 SQL Server Filestream 对象,然后在页面中引用它们?
顺便说一下,我知道可用的各种 ASP.Net 图表控件。但是,我需要生成的图表是针对非常专业的应用程序高度定制的,因此很遗憾,这些控件在这种情况下不起作用。
【问题讨论】: