我一直在尝试使用StringBuilder类在我的网页上动态创建控件。我似乎没有完全通过... 任何帮助将不胜感激。
我正在尝试这样做......
StringBuilder sbTest = new StringBuilder(string.Empty);
sbTest.Append("<input type=\"text\" id=\"txt1\" runat=\"server\" />");
Response.Write(sbTest.ToString());
页面肯定会在浏览器上显示一个可以通过JavaScript轻松访问的TextBox ...但我想要的是服务器端的控件也可以...这样当页面被发布回到服务器我可以轻松获取用户输入文本框的值。
任何1请帮助我....
非常感谢你......
答案 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)
你应该正确地做事,而不是试图重新发明轮子。
创建控件动态地,您可以选择两种方式,.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中获取TextBoxvar 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"]