0

无论如何要使用不会将页面上的所有控件重置为默认值的新查询字符串进行回发?我有一个名为“default.aspx”的页面,上面有几个复选框控件。我可以根据需要检查它们,并且它们将在回发到“default.aspx”时保持持久性(意味着它们保持选中或未选中状态)。但是,如果我回发到“default.aspx?page=2”,所有控件都会恢复到它们的默认状态。有没有办法阻止他们这样做?

4

2 回答 2

2

这里要记住的是,每次进行新的回发时,您都在使用页面类的全新实例。旧实例在发送到 Web 浏览器的那一刻就被丢弃了。考虑到这一点,状态可以在回发之间持续存在的事实非常惊人。有很多事情必须发生才能使一切正常同步。

其中之一就是 ViewState。ViewState 是页面表单中一个特殊的隐藏输入元素。当您使用新的查询字符串请求您的页面时,您不再从表单中发布该视图状态字段。您根本不再真正进行回发:这是对全新页面的请求。没有来自任何表单的 POST 数据,因此缺少 ViewState 数据,并且 ASP.Net 对您之前可能做过的任何事情一无所知。

于 2009-03-05T04:28:18.773 回答
0

更改查询字符串时如何发回?如果您使用的是 ASP.net 复选框控件(使用 runat="server"),那么它们应该与视图状态保持一致。

Joel 是正确的,创建了 Page 类的新实例,但这是 Viewstate 的目的,以克服 HTTP 的无状态特性。

于 2009-03-05T04:43:56.427 回答