2010-03-12 82 views
2

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

我试图做到这一点...

StringBuilder sbTest = new StringBuilder(string.Empty); 

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

Response.Write(sbTest.ToString()); 

肯定的浏览器上显示一个文本框是通过JavaScript方便......但我想要的是控制是可用的页面服务器端也是如此...以便当页面回发到服务器时,我可以很容易地获得用户输入到文本框中的值。

可以在任何1,请帮助我这个....

太感谢你了....

回答

0

你可以从

Request["txt1"] 
1

的价值提供一个名称属性与访问:

Request.Form["txt1"] 
2

Torbjörn Hansson说,如果你只是添加ñ ame属性(也许从您的原始代码段中删除runat =“server”),您将可以访问提交的值,但只有客户端HTML < input/>元素。

如果你想要动态创建的服务器端控件,那么你就必须做这样的事情:

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

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文本框:

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

的Javascript方式

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

txt.AppendTo("body"); 

。NET你使用

string value = Request["myTxt"]; 

所有的JavaScript线值使用jQuery为简化测试结果