【问题标题】:Why dynamically created HTML Input is Empty After Postback为什么动态创建的 HTML 输入在回发后为空
【发布时间】:2011-03-03 21:48:30
【问题描述】:

我动态地将 HTML 和标签添加到 Page。 但是在每次发布后,所有值都是空的。 我能为 Solve 做些什么?

【问题讨论】:

  • 你能给出一个HTML/代码示例吗?
  • 代码很长。 HTML 代码的一部分: string HTMLCode = ""; //文字在Page中。 lit.Text = HTMLCode;

标签: asp.net html dynamic


【解决方案1】:

确保您添加到页面的控件具有 ID,并且在回发后 ID 相同。

【讨论】:

  • 不会为他工作。据我了解,他是用 Javascript 创建的。
  • 不,我在后面创建 HTML 控件 ASP.NET 代码。我从字符串中获取并以文字显示。字面量填写Page_Load。
  • 不要使用 ID。我可以通过单击按钮获得 HTML 控件的值,但毕竟所有值都为空。
【解决方案2】:

您必须在页面的 Init 事件中创建控件,在 Page_Load 中创建控件不会保留 viewstat,因为根据控件生命周期,控件必须在加载事件之前创建,并且在加载之前,控件会检索其 viewstat 信息。创建一个新事件 Page_Init(确保在 Page 标记的第一行中写入 Init="Page_Init")。并在此事件中创建您的控件。

【讨论】:

  • 抱歉,它不起作用。动态创建的 Asp.Net 控件工作正常,但 HTML 标记不工作。
【解决方案3】:

如果您希望在这种情况下在回发后保留这些值,请使用 Request.Forms[key]

您将在此处获得键值对。您必须以某些固定格式准备输入,例如名称属性首先出现,然后是值等。然后如您所知,您可以将值放回 Page_load 中归档。用户正则表达式用模式替换字符串。

string UpdatedText = Label25.Text;

foreach (string key in Request.Form.AllKeys)
{
    if (key.ToLower().StartsWith("recomandedspec_"))
    {
        string keyvalue = Request.Form[key];
        // this uses regular expression to replace input string with postback values
        UpdatedText = PreFillItem.FillTextBox(UpdatedText, keyvalue, key);  
    }
}

Label25.Text = UpdatedText;

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 2020-05-21
    • 2014-08-31
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多