我正在尝试使用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);
几个问题:
这相当于asp.net FileUpload控件吗?
如何在javascript中创建确切的asp.net控件?
asp.net fileupload可以做什么,我上面创建的控件无法做到?
答案 0 :(得分:7)
ASP.NET是一种服务器端语言,而本例中的JavaScript正在使用客户端。以这种方式在客户端创建的元素在服务器端对ASP.NET不可见。
答案 1 :(得分:4)
你做不到。 ASP.NET控件在服务器端呈现之前进行编译。浏览器对ASP.NET一无所知。
最好的办法是向服务器发出ajax请求,以便获得编译的ASP.NET控件 - 即普通的HTML。
答案 2 :(得分: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();
});