1

从这里和网上阅读,我接近假设答案是“不”,但是......

假设我有一个有时具有查询字符串参数的 ASP.Net 页面。如果页面有查询字符串参数,我想在回发之前、期间或之后将其剥离。该页面已经有很多客户端脚本(纯 JavaScript 和 jQuery)。

例如,假设我加载:

http://myPage.aspx?QS=ABC

QS 参数是控制页面首次加载时显示的内容所必需的,并且由“调用”它的页面设置。myPage.aspx具有需要填写的表单元素,并具有执行回发的提交按钮。当页面完成回发时,我需要返回的 URL 为:

http://myPage.aspx

为了避免出现查询字符串时调用的客户端代码。换句话说,在提交之后,我不希望触发与查询字符串参数关联的客户端操作。我知道我可以将表单内容作为查询字符串参数本身附加到 URL,然后重定向到新 URL 并避免提交/回发,但这需要对代码隐藏进行更多类型检查,以避免错误数据和随意欺骗。我想我也可以在代码隐藏中设置一个隐藏字段,并与查询字符串一起查看它,以在我从回发回来时取消客户端行为,但这仍然使查询字符串基本上永远完好无损,我想要在初始页面加载后摆脱它。

有什么想法或最佳实践吗?

PS - 我可以用不会破坏回发行为的 Form.Action 属性做些什么吗?

4

3 回答 3

2

我会使用HTTPModule来拦截和重写 URL 和查询。我不是 100%,但我不相信这对视图状态有任何影响。

这听起来(看起来)很复杂,但实际上它相当微不足道,并且可以进行大量的改进和扩展(通常按照 .NET)。

于 2008-12-09T16:42:46.873 回答
1

这可能是不好的做法,但在这些情况下(我只需要“重置”页面),我只需执行 Response.Redirect 到同一页面。

于 2008-12-09T15:47:34.130 回答
1

我不确定这是您要查找的内容,但如果理解正确,您可以这样做:

-在页面加载时检查 QS 值,如果不存在,则使用隐藏的输入字段。

- 首次使用 QS 加载页面时,进行正常处理并将 QS 值存储在隐藏的输入字段中。

- 如果没有 QS 则使用隐藏的输入值

- 回发后,您可以重定向到同一页面,此时您可以使用 Request.Form[] 来检索隐藏的输入字段,仍然可以正确加载数据但摆脱 QS。

它在我的脑海中是有道理的,我现在不确定它是否有道理,但我会让你决定。

于 2008-12-09T16:34:46.123 回答