【问题标题】:Is it possible to add a control dynamically inline with innerhtml?是否可以动态添加与 innerhtml 内联的控件?
【发布时间】:2022-12-16 21:30:00
【问题描述】:

有谁知道我如何从后面的代码动态添加一个与 innerhtml 内联的控件,然后在单击按钮时捕获值?不确定如何解释这一点,所以我创建了示例代码。

.aspx

<div id="myTable" runat="server"></div>
<div id="result" runtat="server"></div>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />

。CS

protected void Page_Load(object sender, EventArgs e) 
{
    GetTable();
}

protected void GetTable() 
{
    string name = "Sam";
    string age = "18";
    
    TextBox txtTags = new TextBox();
    txtTags.ID = "txtBox1";
    
    myTable.InnerHtml =
        "<div>" +
            "<div>" +
                name +
            "</div>" +
            "<div>" +
                Controls.Add(txtTags) +
            "</div>" +
            "<div>" +
                age +
            "</div>" +
        "</div>";
}

protected void btnSave_Click() 
{
    string myTextbox = txtBox1.Text;
    result.InnerHtml = "Result: " + myTextbox;
}

【问题讨论】:

  • 这是一个巨大的 X/Y 问题。 InnerHtml 无法动态添加控件。请描述您实际想要完成的任务。
  • 那么我如何动态地向页面添加一些 html,然后动态地将控件添加到创建的 html 中的特定位置,这样我就可以在回发时捕获控件服务器端的值?

标签: c# asp.net webforms controls innerhtml


【解决方案1】:

好吧,我想通了。

TextBox txtFileTags = new TextBox();
txtTags.ID = "txtBox1";

HtmlGenericControl parent1 = new HtmlGenericControl("div");
HtmlGenericControl child1 = new HtmlGenericControl("div");
HtmlGenericControl child2 = new HtmlGenericControl("div");
HtmlGenericControl child3 = new HtmlGenericControl("div");
HtmlGenericControl child4 = new HtmlGenericControl("div");

child1.InnerHtml = "Sam"
parent1.Controls.Add(child1);

child2.Controls.Add(txtTags);
parent1.Controls.Add(child2);

child3.InnerHtml = "18";
parent1.Controls.Add(child3);

myTable.Controls.Add(parent1);

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加更多详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写出好的答案的信息in the help center
【解决方案2】:
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GetTable();
    }
}

void GetTable()
{
    string name = "Sam";
    string age = "18";

    string input = $@"

    <div>
        <div>{name}</div>
        <div><input type='text' name='txtBox1' value='' /></div>
        <div>{age}</div>
    </div>";

    myTable.InnerHtml = input;
}

protected void btnSave_Click(object sender, EventArgs e)
{
    string myTextbox = Request.Form["txtBox1"] + "";
    result.InnerHtml = "Result: " + myTextbox;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2013-03-29
    • 2012-12-28
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多