【问题标题】:ASP MVC 3 - Chart from ViewModelASP MVC 3 - 来自 ViewModel 的图表
【发布时间】:2012-10-26 15:35:13
【问题描述】:

使用 ASP MVC 3,我创建了一个视图模型,并将其传递给视图,以便创建多个表来显示数据。不过,我还想使用 Chart 助手以图表/图形图像的形式呈现一些数据。

是否可以为这些图表重用现有的视图模型,或者我是否需要通过另一个 MVC 循环来创建这个图表?我试图阻止返回数据库只是为了获取我在视图中已有的相同信息。我正在访问的“数据库”实际上是一个 API,在我需要获取这些信息的任何时候都需要一个昂贵的登录、获取、注销周期。

如果这不可能,这不是“世界末日”,但感觉应该有一些巧妙的方法来实现这一点,而我只是想念。

谢谢!

【问题讨论】:

  • 只要您不离开该视图。您仍然可以使用该视图模型。
  • 但是是否可以构建与视图“一致”的图表图像? img 标签具有 src 属性的事实意味着我至少需要点击另一个控制器。是否可以将 ViewModel BACK 传递给 Controller 以供其使用和生成图像?
  • 只要控制器期望收到它就应该没有问题。
  • 我如何通过 img 标签将模型传递给控制器​​?我了解如何通过 src 属性中的 URL 传递参数,例如 /Objects?Name=bla&Desc=MoreBla。我需要创建一个很长的 GET URL 来实现这一点吗?

标签: c# asp.net-mvc-3 viewmodel mschart


【解决方案1】:

我会将结果缓存在服务器上。不过,这确实引入了相当多的复杂性。但是,您的问题听起来像是缓存应用程序数据的最终用例。

Here's an MSDN article 如果您可以利用 ASP.NET 的缓存,如果您选择实现服务器端缓存,那应该可以帮助您。

【讨论】:

  • 看起来缓存将是我的理想之选,而且它看起来并没有我想象的那么复杂!这不仅回答了我的问题,而且还回答了我一般关于将对象/数据持久化到服务器一段时间的问题。谢谢!
【解决方案2】:

如果绝对可以重用表和视图模型中的数据。

一种方法是将视图模型渲染到视图中包含在表单中的隐藏字段中。然后,您可以将此表单发布到服务器,服务器会将其绑定回您的视图模型。

抱歉,我不能说得更具体,不看视图模型和视图的形状很难。

【讨论】:

  • 没有与此视图关联的表单。除非我反向执行此操作,否则 View 仅具有一个带有 src 属性的 img 标记,用于获取所需的图像。在这种情况下,图像将是从某些数据动态生成的图表。我现在能想到的唯一两个解决方案是简单地再次获取该请求中的所有数据,或者可能使用 ViewModel 数据创建一个非常长的 GET 字符串,并将其作为 src 属性包含在 img 标签中。
  • 你有别名吗?这和之前的东西真的很像!您必须以某种方式将表数据返回到服务器,无论是通过查询字符串还是帖子。如果你通过查询字符串来做,至少你可以把它交给 img 标签,让浏览器做剩下的事情。如果你用 post 来做,你必须自己编写 ajax 调用并自己处理返回的图像数据。
  • 另一种选择可能是将数据存储在缓存服务器端,这样可以更快地访问源数据。
  • 我想我将使用下面提出的缓存选项。我确实考虑过创建一个简单的 GET 字符串来生成图表,但如果人们试图将他们不应该传递的东西传递给我的图表,这可能会导致很多数据卫生问题。
【解决方案3】:

这可能不是您想要的,但我建议您使用 Google 图表。他们使用 HTML 5 和 SVG,而且非常好看。请在此处查看我的答案Google Combo Charts?,我将在其中展示如何将其连接到 ASP.NET MVC 中的数据库。

【讨论】:

  • 这个答案也很有用,但我认为我需要更多时间学习 HTML 5 才能正确使用它。不过,我会在未来注意到这一点。谢谢!
  • 您实际上不必了解任何 HTML 5,因为它已经为您完成了。您只需要了解 javascript 并设置变量。这很容易。记得为您认为有帮助的答案投票。
  • 我试过了,但我的声誉还是有点差!不管怎样,谢谢,我会在有能力的时候尝试重新访问并投票。
猜你喜欢
  • 2021-04-23
  • 1970-01-01
  • 2021-05-25
  • 2014-03-26
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多