我從一個網站得到了一個示例代碼。有一件事我只是不明白如何在ViewState
自動添加價值。關於C#屬性的困惑
在頁面加載事件據我所知,一些值已在詞典收集和整個集合在一個名爲「名稱」的ViewState後加入添加了如下
private Dictionary<Guid, string> Names
{
get { return (Dictionary<Guid, string>)ViewState["Names"]; }
set { ViewState["Names"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// to keep this sample really simple, we will populate some
// sample data in a Dictionary and store in the viewstate
var names = new Dictionary<Guid, string>
{
{ Guid.NewGuid(), "John" },
{ Guid.NewGuid(), "Smith" },
{ Guid.NewGuid(), "Arther" },
{ Guid.NewGuid(), "Hari" }
};
//store the list in the viewstate.
ViewState.Add("Names", names);
//init grid
}
}
protected void btnAddSave_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Names.Add(Guid.NewGuid(), txtNewName.Text);
}
}
的代碼。
in btnAddSave_Click
事件代碼Names.Add(Guid.NewGuid(), txtNewName.Text);
在集合中再次添加名稱。
但有一件事我只是不明白,如何在視圖狀態中添加新的值。
如果有人看private Dictionary<Guid, string> Names
屬性沒有任何setter,所以在ViewState中如何自動添加新值。我希望我的問題很明確。簡單地說,我只想知道那裏沒有任何setter,但是當代碼像Names.Add(Guid.NewGuid(), txtNewName.Text);
一樣時,在ViewState中新增了多少值。
自動如何在ViewState中添加新值。因爲在字典集合中添加了新的值,但是在向字典集合中添加任何值之後,在ViewState中添加的所有字典值都沒有可用的代碼。我運行代碼並且它工作正常。因此,此代碼對我來說變得非常模糊。所以請幫助我瞭解在字典集合中添加任何新值時ViewState中如何添加新值。謝謝!
它是如何工作的。你可以請擴展更多的示例代碼。謝謝 – Thomas 2010-12-04 10:01:43
我給代碼犯了一個錯誤。代碼是私人的Dictionary Names {get {return(Dictionary )ViewState [「Names」]; }}實際上沒有setter,所以當Names.Add(Guid.NewGuid(),txtNewName.Text);這個代碼執行,然後如何在viewstate中添加新的值,因爲這裏我添加了新的值到dictionary.so如何添加字典viewstate因爲property.plzz中沒有設置setter的擴展 –
Thomas
2010-12-04 18:33:36
忘記了setter,它的唯一getter,現在當您解除引用名稱只讀屬性時,dereferencing後面的實際類型是ViewState,它是一個statebag,statebag實現了IDictionary,這就是爲什麼你可以將ViewState轉換爲Dictionary,現在當你調用Dictionary的Add方法時,它將被存儲在已知的Control的ViewState的StateBag中。 – TalentTuner 2010-12-05 03:32:27