【问题标题】:Dynamically create controls using stringbuilder使用 stringbuilder 动态创建控件
【发布时间】:2011-01-26 20:00:30
【问题描述】:

我一直在尝试使用 StringBuilder 类在我的网页上动态创建控件。我似乎不太了解... 任何帮助将不胜感激。

我正在尝试这样做......

StringBuilder sbTest = new StringBuilder(string.Empty);

sbTest.Append("<input type=\"text\" id=\"txt1\" runat=\"server\" />");

Response.Write(sbTest.ToString());

该页面肯定会在浏览器上显示一个文本框,该文本框可以通过 JavaScript 轻松访问...但我想要的是该控件也可以在服务器端使用...这样当页面被发布回服务器我可以轻松获取用户在文本框中输入的值。

请任何一位帮我解决这个问题....

非常感谢……

【问题讨论】:

    标签: c# asp.net controls dynamic


    【解决方案1】:

    在answer 中几乎是关于我回答this 的内容

    你应该正确地做事,而不是试图重新发明轮子。

    动态创建控件,您可以选择 2 种方式,.NET 方式或 Javascript 方式

    两者都被其他任何人看到,换句话说,使用 .NET 方式创建控件,javascript 可以看到和使用它,反之亦然。

    .NET 方式

    在您的 HTML 文件中添加类似的内容

    <body>
       <form id="form" runat="server">
          <asp:PlaceHolder id="ph" runat="server" />
       </form>
    </body>
    

    在你的脚本部分

    TextBox txt = new TextBox();
    txt.ID = "myTxt";
    
    ph.Controls.Add(txt);
    

    您可以使用以下方法在 javascript 中轻松获取该 TextBox:

    var myTxtValue = $("#myText").value();
    

    Javascript 方式

    var txt = $("<input />", {
                 id : "myTxt"
              });
    
    txt.AppendTo("body");
    

    在 .NET 中,您可以使用

    string value = Request["myTxt"];
    

    注意所有 javascript 行都使用 jQuery 来简化结果

    【讨论】:

      【解决方案2】:

      就像Torbjörn Hansson 所说,如果你只是添加一个 name 属性(并且可能从你原来的 sn-p 中删除 runat="server")你会能够访问提交的值,但您将只有一个客户端 HTML 元素。

      如果您想动态创建服务器端控件,则必须执行以下操作:

      TextBox textbox = new TextBox {
          /* take care to create unique ID's if you're adding more than 1 TextBox */
          ID = "foo", 
          Text = "bar"
      };
      
      Controls.Add(textbox);
      

      【讨论】:

        【解决方案3】:

        提供名称属性并通过以下方式访问它:

        Request.Form["txt1"]
        

        【讨论】:

          【解决方案4】:

          你可以从中获取价值

          Request["txt1"]
          

          【讨论】:

            猜你喜欢
            • 2014-08-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-02
            • 1970-01-01
            • 2011-06-10
            • 2011-06-27
            • 2012-10-03
            相关资源
            最近更新 更多