2012-06-08 66 views
0

我試圖創建使用JavaScript動態asp.net元素。我可以成功地動態創建HTML元素像這樣創建Asp.Net元素在飛行中的Javascript

var _upload = document.createElement("input"); 

_upload.setAttribute("type", "file"); 

_upload.setAttribute("ID", "upload" + rownum); 

_upload.setAttribute("runat", "server"); 

_upload.setAttribute("name", "uploads" + rownum); 

幾個問題:

  1. 這等同於asp.net FileUpload控件?

  2. 我怎麼能在JavaScript創建精確的asp.net控制?

什麼可以一個asp.net文件上傳做,我控制我上面創建的不能做,如果什麼?

回答

2

Florians想法是有用的,但(這取決於你的課程的情況下),可能有一個更簡單的解決辦法:呈現頁面時創建FileUpload控件,但放在一個隱藏的DIV中。然後,你需要在JavaScript中做的是顯示div。

一些示例代碼(asp.net控制可能是錯誤的,它已經有一段時間,因爲我使用過):

mypage.aspx:

<div id="fileupload-div"> 
    <FileUpload id="myupload" runat="server" /> 
</div> 
<button id="mybutton">Show upload control</button> 

的style.css

#fileupload-div { display: none } 

mypage.js

$("#mybutton").click(function() { 
    $("#fileupload-div").show(); 
}); 
+0

不能,我只是從客戶端文件上傳的所有值?然後創建一個asp:fileupload的實例並將其所有屬性設置爲客戶端文件上傳?你的解決方案的問題是fileuploads必須是一個固定的大小,如果我想要200個文件上傳我必須創建200個html標籤 –

+0

我不會開始破解fileupload控件,我認爲這會更容易創建輸入元素,使用jQuery等進行發送,並在服務器端創建特定的處理程序,就像在這個問題中一樣:http://stackoverflow.com/questions/8466941/upload-file-using-jquery-and-handlerashx – OlliM

6

ASP.NET是一個服務器端的語言,而JavaScript的在這種情況下被使用的客戶端。以這種方式在客戶端創建的元素在服務器端的ASP.NET中將不可見。

+0

什麼可以一個asp.n et fileupload做我上面創建的控件不能做什麼? –

4

你不能。 ASP.NET控件在被呈現在服務器端之前被編譯。瀏覽器對ASP.NET沒有任何瞭解。

最好的辦法是做一個Ajax請求到服務器,讓你得到編譯ASP.NET控件 - 即普通的HTML。

+0

你有這個想法的例子嗎? –

+0

如果您不知道AJAX是什麼,我只會將您重定向到那裏:http://www.asp.net/ajax。花一些時間學習它,這非常有用。從「入門」開始http://www.asp.net/get-started –

+0

什麼可以通過一個asp.net fileupload來完成,我上面創建的控件不能做什麼? –