Переменная JSON не обновляется при обратной передаче - PullRequest
0 голосов
/ 23 января 2019

У меня есть форма для редактирования значений базы данных. Я регистрирую переменную json, используя ClientScriptManager.RegisterClientScriptBlock при загрузке страницы, а затем использую ее, чтобы проверить изменения в форме и предложить пользователю сохранить. В событии нажатия кнопки «Сохранить» я повторно выполняю код, который регистрирует переменную 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());
}

Возможно ли то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 24 января 2019

Дайте этому попытку

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack == false)
    {
      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);
    PopulateForm(p);
}

Он выполняется PopulateForm(p) после того, как вы создали json, а в Page_Load он запускается, только если это не PostBack

...