C# 响应。重定向将丢失ViewState吗?

C# 响应。重定向将丢失ViewState吗?,c#,.net,redirect,viewstate,C#,.net,Redirect,Viewstate,假设,在我创建此控件的页面(WebForms)的Page_Load()上: HtmlGenericControl optionBox = new HtmlGenericControl("div"); optionBox.Attributes["class"] = "class_1"; 然后,用户将使用链接按钮调用页面。在从此按钮调用的方法上,我更改了上一个div的类: protected void cmdCerca_Click(object sender, EventArgs e) {

假设,在我创建此控件的页面(WebForms)的Page_Load()上:

HtmlGenericControl optionBox = new HtmlGenericControl("div");
optionBox.Attributes["class"] = "class_1";
然后,用户将使用链接按钮调用页面。在从此按钮调用的方法上,我更改了上一个div的类:

protected void cmdCerca_Click(object sender, EventArgs e)
{
    ...
    div.Attributes.Add("class", "class_2");
    ...
}
如果我观察渲染结果,我会看到div的类已经改变

这意味着,在对该页面的下一次调用中(在此上下文中,示例调用
cmdCerca_2_单击
),该对象将从视图中恢复,得到
class_2
,而不是
class_1

但是,如果在
cmdCerca\u单击
的末尾,我使用
Response.Redirect()调用同一页面,则不会发生这种情况。看来景色会消失

为什么??我怎样才能修好它


希望问题清楚。

您需要在page init事件中添加控件,而不是加载,以便将它们放入控件树中


您必须在每次回发时重新创建此控件?在这种情况下,每次都会设置默认类。

这是预期的行为。在为搜索表单构造GET查询字符串之前,我会尝试避免重定向我需要重定向。所以在将来,粘贴相同的查询,我会得到相同的结果。。。!预期行为。。。为什么?有什么原因吗?为什么是页面初始化而不是页面加载?我少了一些吗?