在单个视图状态对象中存储多个值



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

基本需求是,我正在使用网格视图行命令事件来查找三个值。我想在button_click使用这些值 event.it 这完全是不可能的,所以我更喜欢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"});

发时从视图状态检索回来:

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

您可以使用所需的任何分隔符。但是,如果您使用三个单独的变量,您的代码会干净得多。

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

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

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

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

要从视图状态检索值,请将值拆分为"~"。

相关内容

  • 没有找到相关文章

最新更新