在单个viewstate对象中存储多个值

时间:2012-05-23 10:50:52

标签: c# asp.net

你好,这是关于asp.net状态管理的一个问题。 我想将三个值存储到单个viewstate中。是否可以存储为单个或者我将使用三个视图状态变量。

基本需要是,我使用gridview rowcommand 事件来查找三个值。 我想在 button_click event.it中使用这些值,因为我不太喜欢viewstate。

如果有任何其他方式可以发布。我是.net开发的新手,所以请分享一些你的知识。

4 个答案:

答案 0 :(得分:1)

您可以创建一个类,并使用Serializable属性对其进行标记。然后创建该类的列表实例并将其作为1项存储在视图状态中。这是你需要存储很多值的时候。不过你认为是一个简单的案例:

[Serializable()]
class SomeData
{

    public string Value1 {get; set;}
    public string Value2 {get; set;}
    public string Value3 {get; set;}

}

添加到viewstate:

ViewState.Add("myData", new SomeData () {Value1 = "A", 
    Value2 = "B", 
    Value2 = "3"});

在回发时从ViewState返回:

var data = (SomeData)ViewState["myData"];
Label1.Text = string.Format("{0}, {1}, {2}", 
    data.Value1, data.Value2, data.Value3);

答案 1 :(得分:0)

您可以使用任何分隔符。例如:

ViewState["items"] = item1 + "~" + item2 + "~" + item3

要从ViewState中检索值,请将值拆分为“〜”。

答案 2 :(得分:0)

您可以使用您想要的任何分隔符。 但是如果使用三个单独的变量,那么你的代码会更清晰。

让.net处理视图状态。使用一个变量似乎是一种不必要的复杂化。

答案 3 :(得分:0)

在您的场景中,您不需要ViewState - 您可以将它们存储在后面代码中的变量中,因为rowcommand和button_click将同时在同一个帖子上触发。如果需要跨回发帖,则只需要在ViewState中存储项目。