5

我对 .NET 不太熟悉,但我想将一个简单的值(1 到 1000 之间的数字,它是特定的高度div)保存到视图状态并在更新面板重新加载时检索它(在标记中某处或使用javascript)。最简单的方法是什么?

这个页面给了我以下代码:

string strColor;
if (Page.IsPostBack)
{
   // Retrieve and display the property value.
   strColor = (string)ViewState["color"];
   Response.Write(strColor);
}
else
   // Save the property value.
   ViewState["color"] = "yellow";

但是,我并不完全清楚在哪里或如何访问示例 strColor。

既然这是在后面的代码中,Response.Write那么甚至会在哪里吐出该代码呢?尝试此代码时找不到它。以及如何使用 javascript 设置该值,而不是在后面的代码中设置它?

4

2 回答 2

7

您可以简单地将 div 设置为服务器控件,如下所示:

<div id="yourdiv" runat="server" ...

当页面回发时;只需通过设置它的属性来设置它的高度;例如:

yourDiv.Attributes("style","height:"+height_read_from_ViewState+"px;");

或者,您可以在客户端存储高度,使用隐藏字段并在服务器端读取该隐藏字段的值来设置 div 的高度。

<asp:hiddenfield id="hdnHeight" runat="server" />

您在 Javascript 中设置高度,如下所示:

function setHeight(value)
{
  document.getElementById('<%=hdnHeight.ClientID').value=value;
}

并在服务器端回发:

yourDiv.Attributes("style","height:"+hdnHeight.Value+"px;");
于 2012-08-02T17:37:26.347 回答
3

我会将 strColor 更改为属性并将视图状态用作属性的后备存储。

public string strColor 
{
    get
    {
        return ViewState["strColor"];
    }
    set
    {
        ViewState["strColor"] = value;
    }

}

然后你会像使用任何其他属性一样使用它:

if (Page.IsPostBack)
{
   // Retrieve and display the property value.
   Response.Write(strColor);
}
else
   // Save the property value.
   strColor = "yellow";
于 2012-08-02T17:33:15.397 回答