簡體   English   中英

如何通過javascript動態創建C#中的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM