【发布时间】:2019-01-23 15:50:16
【问题描述】:
我有一个表单来编辑数据库值。我在页面加载时使用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());
}
我正在尝试做的事情可能吗?
【问题讨论】:
-
你怎么看 - 一些代码可能会或可能不会帮助得到答案?
-
有人有什么想法吗?
-
在
btnSave_Click中添加PopulateForm(p);在CreateJson(p);之后 -
我认为您还应该在
Page_Load上添加if Page.IsPostBack检查,并且仅在其false时加载这些值 -
它不会解决您的问题 - 但您在脚本中的价格值后面缺少一个右引号。
标签: c# asp.net json registerclientscriptblock