使用stringbuilder动态创建控件

时间:2010-03-12 13:08:18

标签: c# asp.net controls dynamic

我一直在尝试使用StringBuilder类在我的网页上动态创建控件。我似乎没有完全通过... 任何帮助将不胜感激。

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

StringBuilder sbTest = new StringBuilder(string.Empty);

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

Response.Write(sbTest.ToString());

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

任何1请帮助我....

非常感谢你......

4 个答案:

答案 0 :(得分:2)

Torbjörn Hansson类似,如果您只是添加名称属性(并且可能从原始代码段中删除 runat =“server”),那么您将成为能够访问提交的值,但您只能拥有客户端HTML&lt; input /&gt;元件。

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

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);

答案 1 :(得分:2)

answer几乎关于我回答this

的内容

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

创建控件动态地,您可以选择两种方式,.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 Way

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

txt.AppendTo("body");
在.NET中

,您可以使用

获取值
string value = Request["myTxt"];

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

答案 2 :(得分:1)

提供名称属性并使用以下方式访问:

Request.Form["txt1"]

答案 3 :(得分:0)

您可以从

获取值
Request["txt1"]