有没有办法在页面加载后保存查询字符串Is?我之所以看,是因为...i应该来回处理页面,更重要的是,如果用户尝试手动插入it,那么它不应该影响我的页面结果,因为我将不从querystring读取it,而是从一些保存属性或类似的东西读取it。
举个例子:假设页面是第一次加载...我有这个url:
http://www.somesite.com/Shop/Product/Detail.aspx?ProductId=100 如果用户试图修改查询并重新加载页面,则page_load不应从查询字符串中读取,而应从保存的属性或其他内容中读取。
发布于 2012-04-17 10:47:24
这是行不通的,因为它违背了互联网最基本的本质。互联网是无状态的。
每次用户更改查询字符串时,它将被视为新的Url,存储参数将没有任何用处。Page.IsPostback也不会工作,因为每次网址更改都会是第一次点击。
话虽如此,你仍然可以绕过它,
但问题仍然存在,如果用户更改了该Guid,那么它将被视为新的请求。您可以前进一步并开始保存该GUID,以确保只处理系统生成的GUID,但总的来说,这只会使您的系统变得复杂。
我的猜测是,您可能正在为您的问题寻找错误的解决方案。如果你能分享你的实际目标,那么我们也许可以向你推荐一些更具体的东西。
发布于 2012-04-17 10:38:07
在页面加载事件中,查看Page.IsPostBack属性。第一次加载页面时为false。然后,您应该验证您的参数,并可能将它们保存到会话或视图状态。
If Page.IsPostback = false Then
'Validate Request("ProductID") here
'Save in viewstate or session state
Else
'Retrieve ProductID from viewstate or session state
End If如果用户更改了查询字符串,您应该将其视为新的页面加载。
发布于 2012-04-17 10:47:32
您不能阻止用户编辑查询字符串值并尝试查看另一个页面的内容或执行某些操作。您可以做的是在页面加载中检查该用户是否有足够的权限访问此页面。
Ex : www.mysite.com/editproduct.aspx?productid=4在editproduct.aspx中,您必须检查正在访问页面的当前用户是否有权访问产品4。(可能他应该是创建者/他应该属于特定的高级用户组,等等……取决于您的场景)。如果他有访问权限,则向用户显示编辑表单,否则将其隐藏并显示一条消息,提示“您未被授权访问此资源”。
https://stackoverflow.com/questions/10184251
复制相似问题