我如何重定向到另一个页面传递数据,但没有在c#的帖子
本文关键字:数据 重定向 另一个 | 更新日期: 2023-09-27 18:10:00
当用户来到我的页面_mypage.aspx?querystring_
时,我不希望查询字符串留在地址栏中,因为我不想重复依赖于该值的操作,如果他们刷新。
我试图从查询字符串中获取值并将其发布到同一页面,但它给出了几乎相同的效果:刷新将重新发布。
我试图重定向添加值到哈希(#),但哈希值没有返回到服务器。
我有什么选择?我如何重定向到另一个或相同的页面没有帖子,但保持数据?
如果您在同一网站内,您可以使用Session
来存储数据。
HttpContext.Current.Session["asdf"] = someObject;
作为对象存储,因此必须适当地强制转换它。
Session是一种常用的机制,用于在Querystring或POST变量之外"传递"值。
Session["test"] = "Test word";
string test = (string)Session["test"];
但是,我要告诉您,如果您想要处理这种情况的最佳方法,您应该研究POST-REDIRECT-GET模式。http://en.wikipedia.org/wiki/Post/Redirect/Get
基本上,更新数据的主要操作是通过POST处理的。如果这是成功的,然后你重定向到一个GET,其中有你的查询字符串参数(如"updated=True"或其他)。
这样做时,用户就不能意外地或有意地重新触发实际的数据保存操作,因为如果他们重新加载他们登陆的页面(GET页面),数据不会被改变,他们的确认消息保持不变。
使用Post/Redirect/Get模式
在<<p> strong> ASP。. NET,你可以使用Session,正如@gunr2171的回答所描述的。 在<<p> strong> ASP。. NET MVC你可以使用TempData。要支持在最后一页多次刷新屏幕,可以使用TempData.Keep()
方法:
TempData.Keep("TempDataKeyValue1");
SomeModelClass model = (SomeModelClass)TempData["TempDataKeyValue1"];
如果在某种程度上适用于你之后,我会执行的动作,当你得到的请求与querystring,并在最后你重定向到一个url(相同)没有querystring (Post-Redirect-Get)。
但是,您也可以使用cookie:- 服务器接收到查询字符串url
- 服务器发送重定向响应到url,不带querystring,添加一个包含querystring的cookie
- 服务器接收URL,不带查询字符串,但带cookie
- 服务器根据cookie值执行操作,删除cookie并发送最终响应,显示操作结果。
页面刷新后将不再有cookie