[英]How to get object in C# when it is dynamically created by javascript
我在.aspx中用Javascript創建了幾個輸入文本
for (var i = 0; i < listbox.options.length; i++) {
var text = listbox.options[i].value;
var element = document.createElement("input");
//Assign different attributes to the element.
element.setAttribute("type", "text");
element.setAttribute("value", text);
element.setAttribute("id", "TMruleItem");
element.setAttribute("style", "width:480px; margin-top:10px");
element.setAttribute("disabled", "disabled");
element.setAttribute("runat","server");
var foo = document.getElementById("Panel_TM");
foo.appendChild(element);
}
但是,當我嘗試在C#(.aspx后面的代碼)中獲取此對象的文本時,似乎不可能。 任何人都可以幫忙嗎? 非常感謝!
在C#(服務器端)呈現頁面之后,js在客戶端運行。 你無法做你想做的事,因為你有這些技術如何相互作用的根本缺陷的模型。 話說回來; 您可以實現Web服務或ajax框架以將文本值傳遞給服務器。
我不確定如何將它添加到C#端的東西(它們存在於服務器上),因為這個元素只被添加到客戶端(即使你添加屬性runat =“server”),因為已生成的頁面已發送。
但是,如果您需要能夠動態添加元素,您總是可以使用存儲在某處的數據庫(數據庫)傳遞一些信息,然后在下次頁面時重新創建html元素。產生...
最終結果是,為了使C#能夠訪問該元素,它必須存在於服務器上的某個點上。 如果不是訪問元素,而只是想訪問該值,只要表單被發布(ajax或常規),該值將成為Request變量的一部分:
string value = Request.Params["TMruleItem"];
將以下內容添加到您的JavaScript代碼中:
element.setAttribute("name", "TMruleItem");
輸入的值將在服務器端提供:
string value = Request.Form["TMruleItem"];
我認為你需要將元素添加到表單中,當你回發到服務器時,你可以使用Request.Form拉出值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.