私はサイトからサンプルコードを受け取りました。私はちょうど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);
}
}
を次のように。 btnAddSave_Click
イベントで
コードNames.Add(Guid.NewGuid(), txtNewName.Text);
は、コレクションに再び名前を追加します。私はどれだけ新しい値はビューステートに追加されていることを理解していない
が、1つの事。
誰かが新しい値がViewStateに追加されるので、どのように自動的にセッターがありませんありprivate Dictionary<Guid, string> Names
プロパティを見れば。私は私の質問がはっきりしていることを望む簡単な言葉では、私はちょうどそこにはsetterがないことを知りたいですが、コードがNames.Add(Guid.NewGuid(), txtNewName.Text);
のようになったら、ViewStateに新しい値がどのように追加されたかを知りたいだけです。 ViewStateに追加されたか、新しい値を自動的
。新しい値がディクショナリコレクションに追加されていますが、ディクショナリコレクションに値を追加した後にすべてのディクショナリ値がViewStateに追加されたコードはありません.iコードを実行すると、このコードは非常にあいまいになります。辞書コレクションに新しい値が追加されたときに、ViewStateで新しい値がどのように追加されるかを理解してください。ありがとう!
どのように動作していますか。サンプルコードを使って詳細を記入してください。ありがとう – Thomas
私はコードを与えて1つの間違いをした。コードはプライベートです。Dictionary名前{get {return(Dictionary ))ViewState ["Names"]; }}実際には何も設定されていなかったので、Names.Add(Guid.NewGuid()、txtNewName.Text);このコードは、新しい値がviewstateにどのように追加されたかを実行しました。 viewstate property.plzzに存在しないため、expail –
Thomas
Setter、その唯一のゲッターを忘れてしまいます。名前のreadonlyプロパティを参照すると、逆参照の背後にある実際のタイプはViewStateで、statebagをinturnし、statebagはIDictionaryを実装しています。 ViewStateをDictionaryにキャストします。DictionaryのAddメソッドを呼び出すと、既知のControlのViewStateであるStateBagに格納されます。 – TalentTuner