2012-05-23 75 views
0

嗨,這裏是關於asp.net狀態管理的一個問題。 我想存儲三個值到單個viewstate.Is它可能存儲在單個或我會去三個viewstate變量。在單個viewstate對象中存儲多個值

基本需要是,我正在使用gridview rowcommand事件來查找三個值。 我想用這些值在button_click event.it是直接不可能的,所以我更喜歡viewstate。

如果有其他方式可以做到這一點你可以發佈。我是.net開發新手,所以請分享一些你的知識。

+0

你有什麼理由想把它們放在一個變量中嗎? – nunespascal

+0

從你的問題中刪除了'asp.net-mvc'標籤,因爲ASP.NET MVC中沒有這種ViewState的概念。 –

回答

0

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

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

對於從ViewState中檢索值,將值拆分爲「〜」。

+1

當其中一個項目包含'〜'? – tomfanning

+0

@tomfanning我已經在我的回答中說過,您可以選擇任何分隔符(根據您的數據和需要)。 –

0

您可以使用任何你想要的分隔符。 但是如果你使用了三個單獨的變量,你的代碼會更清晰。

讓.net處理視圖狀態。使用一個變量似乎是不必要的複雜。

1

您可以創建一個類,並使用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); 
+0

如果您喜歡,請將其標記爲答案... – deostroll

0

在你的情況下,您不需要的ViewState - 您可以將它們存儲在代碼背後的變量中,因爲rowcommand和button_click都會在同一個帖子後觸發。您只需將ViewState中的項目存儲在郵寄內容中即可。

+0

但按鈕位於ModelClickup擴展器(按鈕單擊gridview)之後rowcommand模型彈出窗口將打開,並且該彈出窗口上有按鈕(button_click)。 –

+0

好吧,但我仍然不確定你需要ViewState - 你不能只是通過button_click中的gridview行循環?但如果你不能,我會去三ViewState屬性 –

+0

@FrankJames一個ViewState屬性的例子是'私人字符串Item1 {得到{返回(字符串)ViewState [「Item1」];}集{ViewState [「Item1」] =值;}}' –

相關問題