データベースの値を編集するフォームがあります。ClientScriptManager.RegisterClientScriptBlockページの読み込み時に使用して json 変数を登録し、それを使用してフォームの変更を確認し、ユーザーに保存を促します。保存ボタンのクリック イベントで、json 変数を登録するコードを再実行して、ユーザーが保存したばかりの変更が含まれるようにします。
私が遭遇した問題は、ポストバック後のフォームへの変更を反映するためにjson変数が更新されていないことです。ページを更新した後にのみ、json 変数が更新されます。
protected void Page_Load(object sender, EventArgs e)
{
Property p = Property.GetPropertyById(id);
PopulateForm(p);
CreateJson(p);
}
protected void btnSave_Click(object sender, EventArgs e)
{
Property p = Property.GetPropertyById(id);
p.Price = txtPrice.Text.Trim();
p.Save();
CreateJson(p);
}
private void CreateJson(Property p)
{
StringBuilder JSONtext = new StringBuilder();
JSONtext.Append("<script type='text/javascript'>");
JSONtext.Append("var property = ");
JSONtext.Append("{");
JSONtext.Append("\"price\":\"");
JSONtext.Append(p.Price.ToString());
JSONtext.Append("};");
JSONtext.Append("</script>");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "jsonVariable", JSONtext.ToString());
}
私がやろうとしていることは可能ですか?