0

我正在尝试使用 javascript 动态创建 asp.net 元素。我可以像这样成功地动态创建html元素

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 fileupload 可以做什么,而我在上面创建的控件不能做什么?

4

3 回答 3

7

ASP.NET 是一种服务器端语言,而在这种情况下,JavaScript 被用于客户端。以这种方式在客户端创建的元素对服务器端的 ASP.NET 是不可见的。

于 2012-06-08T14:30:30.113 回答
4

你不能。ASP.NET 控件在服务器端呈现之前进行编译。并且浏览器对 ASP.NET 一无所知。

最好的办法是向服务器发出 ajax 请求,以便获得编译的 ASP.NET 控件——即普通的 HTML。

于 2012-06-08T14:31:22.763 回答
2

Florians 的想法很有用,但是(当然取决于您的情况)可能有一个更简单的解决方法:在呈现页面时创建 fileupload 控件,但将其放入隐藏的 div 中。然后你在 JavaScript 中所要做的就是显示 div。

一些示例代码(asp.net 控件可能是错误的,我已经有一段时间没有使用它们了):

我的页面.aspx:

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

样式.css

#fileupload-div { display: none }

我的页面.js

$("#mybutton").click(function() {
    $("#fileupload-div").show();
});
于 2012-06-08T15:12:00.927 回答