2010-03-12 79 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爲簡化測試結果