最近做上传功能,遇到这样的需求,动态生成控件,想传多少个传多少个。
发现如下问题不能解决,还望朋友们想想办法。
1.用js生成控件
前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="上传多个图片.WebForm3" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script language="JavaScript" type="text/javascript"> function add() { var obtn = document.createElement("input"); obtn.setAttribute("type", "file"); obtn.setAttribute("runat", "server"); obtn.setAttribute("id","Hello"); document.body.appendChild(obtn); //注意如果有form表单不要忘记加入表单 } </script> </head> <body> <form id="form1" method="post" runat="server" > <div align="center"> <h3>多文件上传</h3> <P id="MyFile"></P> <P> <input type="button" value="增加(Add)" onclick="add()"/> <input onclick="this.form.reset()" type="button" value="重置(ReSet)"/> <asp:Button Runat="server" Text="开始上传" ID="UploadButton" onclick="UploadButton_Click"></asp:Button> </P> <P> </P> </div> </form> </body> </html>
后台代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace 上传多个图片 { public partial class WebForm3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void UploadButton_Click(object sender, EventArgs e) { Control my = this.form1.FindControl("Hello"); if (my != null) { Response.Write("Hello"); } else { Response.Write("No"); } } } }
总是显示NO,并且生成多个上传控件后,页面源文件中没有代码,就获取不到ID,就不能上传。。。。
请问这要如何解决?
你的 上传控件是用 javascript 生成的,不属于服务器控件,在服务器端肯定找不到。
要用 Request.Files 才能到值,建议控件 name 属性设成不一样。
游览器中通过JS来创造的控件,可以用request["控件的name属性"]来获取值
使用 js写出来的 控件怎么在其他js里面获取到那个js呢