在ASP MVC页面之间传递变量而不将其发送到服务器

时间:2013-08-28 11:14:18

标签: javascript jquery html forms variables

我正在使用ASP.NET MVC 4创建一个网站。该应用程序由两个页面组成,其工作流程类似于Google Maps。在第一页上,用户键入患者的姓名,出生日期以及该患者的一些基本数据。然后用户提交表单,并被带到应用程序的第二页。第二页只是用户可以打印的打印预览。我希望用户能够使用浏览器的后退和前进按钮在两个页面之间导航(例如,在看到第二页后更改第一页上的输入)

实际上计算打印输出上显示的数据非常复杂,我真的希望所有代码都在服务器端执行,我可以使用C#。所以我需要将患者的数据发送到服务器。问题是我没有SSL证书,我不想通过HTTP发送患者姓名及其数据(因为这违反了隐私)。我愿意通过HTTP发送患者的数据,只要它仍然与患者的身份分开(除了在客户端)。出生的名称和出生日期只显示在打印输出的角落,并且不会影响服务器端的计算。

我可以想到两种可能的方法来完成这项任务。第一种更优选的解决方案是通过HTTP仅发送一些表单数据的方法,但仍然以某种方式从第二页上运行的客户端jquery的第一页获取出生的名称和出生日期。也许我可以制作一个cookie并以某种方式指定不将其作为http请求的一部分发送?

实现此目的的另一种方法是将整个应用程序放入单个页面,并通过客户端jquery动态更改内容。在此解决方案中,当用户提交表单时,我可以触发将返回JSON的ajax请求。然后,我可以使用从服务器返回的数据(即JSON)以及表格(即患者的姓名和出生日期)填充打印预览。有没有办法实现这一点,同时仍允许用户使用浏览器的后退和前进命令在数据输入页面和打印预览页面之间导航,如果它们实际上是同一页面?

1 个答案:

答案 0 :(得分:2)

我不相信你描述的可能没有严重的缺点。当然,您可以将数据汇总到cookie或本地存储中并避免POST - 但这在您的视图中是很多逻辑,并且是一个非常讨厌的黑客。

我建议的选项是:

  • 获取SSL证书 。如果这是你的方法背后的驱动力,那么花6美元买一个。严重。

  • 将打印视图保留在与表单相同的页面中;使用css @media类型指定打印样式。