我从一个网站得到了一个示例代码。有一件事我只是不明白如何在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