嗨,这里是关于 asp.net 状态管理的一个问题。我想将三个值存储到单个视图状态中。是否可以存储单个值,或者我将使用三个视图状态变量。
基本需求是,我正在使用 gridview rowcommand事件来查找三个值。我想在button_click事件中使用这些值。这是直接不可能的,所以我更喜欢 viewstate。
如果有其他方法可以发布。我是.net 开发的新手,所以请分享一些关于你的知识。
您可以创建一个类,并使用 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);
在您的场景中,您不需要 ViewState - 您可以将它们存储在后面代码中的变量中,因为 rowcommand 和 button_click 都会在同一个回发时触发。如果在回发中需要它们,您只需要将项目存储在 ViewState 中。
您可以使用任何分隔符。例如:
ViewState["items"] = item1 + "~" + item2 + "~" + item3
为了从 ViewState 中检索值,用“~”分割这些值。
你可以使用任何你想要的分隔符。但是,如果您使用三个单独的变量,您的代码会更简洁。
让 .net 处理视图状态。使用一个变量似乎是一种不必要的复杂化。