0

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

基本需求是,我正在使用 gridview rowcommand事件来查找三个值。我想在button_click事件中使用这些值。这是直接不可能的,所以我更喜欢 viewstate。

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

4

4 回答 4

2

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

[Serializable()]
class SomeData
{

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

}

添加到视图状态:

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);
于 2012-05-23T11:03:14.533 回答
0

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

于 2012-05-23T12:05:36.447 回答
0

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

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

为了从 ViewState 中检索值,用“~”分割这些值。

于 2012-05-23T10:58:17.043 回答
0

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

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

于 2012-05-23T11:02:33.767 回答