Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将值保存到viewstate并从中读取_C#_Asp.net_Viewstate_Webforms - Fatal编程技术网

C# 将值保存到viewstate并从中读取

C# 将值保存到viewstate并从中读取,c#,asp.net,viewstate,webforms,C#,Asp.net,Viewstate,Webforms,我不太熟悉.NET,但我想将一个简单的值(1到1000之间的数字,即特定div的高度)保存到viewstate,并在更新面板重新加载时检索它(在标记中或使用javascript)。最简单的方法是什么 给我以下代码: string strColor; if (Page.IsPostBack) { // Retrieve and display the property value. strColor = (string)ViewState["color"]; Response.W

我不太熟悉.NET,但我想将一个简单的值(1到1000之间的数字,即特定
div
的高度)保存到viewstate,并在更新面板重新加载时检索它(在标记中或使用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


既然这是在代码后面,那么
在哪里响应呢?写
甚至把代码吐出来?我在尝试此代码时找不到它。我如何使用javascript来设置该值,而不是在代码中设置它

我会将strColor更改为属性,并使用viewstate作为属性的后备存储

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";

您只需将div设置为服务器控件,如下所示:

<div id="yourdiv" runat="server" ...
或者,您可以在客户端存储高度,使用隐藏字段并在服务器端读取该隐藏字段的值来设置div的高度

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

酷。那么我如何将strColor设置为除“黄色”之外的其他颜色呢?我想将它设置为div的高度——如果我动态填充一个隐藏的文本输入,它会有帮助吗?你可以像普通变量一样使用它,无论在哪里可以使用普通变量。我真的不理解你的背景,所以除了你最初的问题之外,我不能给出任何建议。让我这样说:假设我不想将strColor保存为'yellow',而是保存为用户在javascript提示下输入的值。如何使用javascript将strColor设置为用户的响应?啊,好的。将
添加到页面,并使用JavaScript将隐藏字段的值设置为用户响应
HiddenField
内置了ViewState,因此您不需要我的代码。基本上是Icarus的回答。我同意将ViewState变量封装到属性中可以更容易地访问它们,但这被认为是最佳实践吗?网上有没有关于这方面的文章可以帮助我把它作为一个标准来实施?我似乎找不到任何文章专门提到这种做法的好处……这非常有用——很抱歉,我对这一点很陌生,但我不清楚如何通过回发使隐藏字段保持其价值。我已经创建了隐藏字段,并用javascript更新它的值。因此,如果div高度为30,则隐藏字段为30,但在重新加载时,隐藏字段再次为空。我错过了什么?编辑:--哎呀!对不起,它是自动的。我一定是有缓存问题。这个很好用,谢谢!!你没有遗漏任何东西。如果页面被重新加载,如“键入url并按enter键”,则重置该值是正常的,因为您是第一次访问该页面。如果您正在谈论回发(即单击页面上的按钮并提交表单),则应保留隐藏字段中的值,因为ViewState将为您保留该值。那是-梯子-你怎么了?你是对的:我很困惑,因为我是重新加载而不是做回发的事情。要通过重新加载来保持该值,我想我需要在服务器上保存一些东西——现在不值得我付出努力,因为我需要的主要事情是通过回发来保持它,所以它现在可以工作了,谢谢!
<asp:hiddenfield id="hdnHeight" runat="server" />
function setHeight(value)
{
  document.getElementById('<%=hdnHeight.ClientID').value=value;
}
yourDiv.Attributes("style","height:"+hdnHeight.Value+"px;");