在飞行中创建Asp.Net元素Javascript

时间:2012-06-08 14:27:16

标签: javascript asp.net

我正在尝试使用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控件?

  3. asp.net fileupload可以做什么,我上面创建的控件无法做到?

3 个答案:

答案 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();
});