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

Passing variables between ASP MVC pages without sending it to server

本文关键字:服务器 变量 MVC ASP 之间      更新时间:2023-09-26

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

实际上,计算打印输出上显示的数据非常复杂,我真的想让所有的代码都在服务器端执行,在那里我可以使用C#。所以我需要将患者的数据发送到服务器。问题是我没有SSL证书,我不想通过HTTP将患者的姓名和他们的数据一起发送(因为这侵犯了隐私)。我愿意通过HTTP发送患者的数据,只要它与患者的身份保持分离(在客户端除外)。姓名和出生日期只显示在打印输出的角落里,丝毫不影响服务器端的计算。

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

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

我不相信你所描述的可能没有严重的缺点。当然,你可以将数据汇总到cookie或本地存储中,从而避免POST——但在你看来,这是一个非常糟糕的黑客行为。

我建议的选项是:

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

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