2011-11-30 37 views
1

我有Default.aspx頁和一個用戶控制。 usercontrol有多個文件上傳的以下代碼。 現在的問題是,當我添加文件上傳,目前的情況下文件不給我仍然是零我猜,因爲它是由用戶控制渲染任何價值。當前上下文值是不是從用戶控件呈現爲.aspx

我應該怎麼辦?

我的用戶UPLOAD.ASCX

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="FileUpload.ascx.cs" Inherits="FileUpload" %> 
<script type="text/javascript" src="_scripts/jquery-1.4.1.min.js"></script>  
<script type="text/javascript"> 
    var i = 1; 
    $(document).ready(function() { 
     $("#addfile").click(function() { 
      $("#dvfiles").append("<input name=" + i + "fu type=file /><a href=#>remove</a><br>"); 
      i++; 
     }); 

     $("#dvfiles a").live('click', function() { 
      $(this).prev("input[type=file]").remove(); 
      $(this).remove(); 
     }); 
    }); 

    $(document).submit(function() { 
     var flag = true; 
     $("#dvfiles input[type=file]").each(function() { 
      if ($(this).val() == "") { 
       $(this).css("background", "Red"); 
       flag = false; 
      } 
     }); 
     return flag; 
    });   
</script> 

<div id="Fileuploader"> 
<a href="#" id="addfile">Attach a file..</a><br /> 
<asp:Label ID="lblMessage" runat="server"></asp:Label><br /> 
<asp:Button ID="btnUpload" runat="server" Text="Upload" 
    onclick="btnUpload_Click" /> 
</div> 

UPLOAD.ASCX.CS

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     HttpFileCollection filecolln = Request.Files; 
     //here i don't get values of current files. 
     // this is zero. because of this following if condition failed 
     //please help here 
     if (filecolln.Count > 0) 
     { 
      for (int i = 0; i < filecolln.Count; i++) 
      { 
       HttpPostedFile file = filecolln[i]; 
       if (file.ContentLength > 0) 
       { 
        file.SaveAs(ConfigurationManager.AppSettings["FilePath"] + System.IO.Path.GetFileName(file.FileName)); 
       } 
      } 
      lblMessage.Text = "Uploaded Successfully!"; 
     } 
     else 
     { 
      lblMessage.Text = "No files selected!"; 
     } 

    } 
    catch (Exception ex) 
    { 
     lblMessage.Text = ex.Message; 
    } 
} 

Default.aspx code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"  
    Inherits="_Default" %> 
    <%@ Register TagPrefix="ucFileuploader" tagName="Fileuploader" src="FileUpload.ascx" %> 

    <!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> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <ucFileuploader:Fileuploader ID="Fileuploder" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 
+1

你是否意識到asp.net已經有了,你就可以來asp.net 2.0中使用一個FileUpload控件? http://msdn.microsoft.com/en-us/library/aa479405.aspx – rtpHarry

+1

「它轉到'Default.aspx#'」?這是什麼意思?你的錯誤是什麼? –

回答

2

的問題是,你正在使用的JavaScript的ID名稱。

所以當你擁有它的.aspx呈現爲是, ID爲addfile控制,但是當你有ID爲Fileuploader用戶控件ID爲addfile控制, 比呈現ID是Fileuploader_addfile, 因此改變用正確的ID在Java腳本中的id名稱。

要chechk什麼是渲染的id,打開網頁瀏覽器,網頁的開源的名稱,並找到您元素和複製ID爲Java腳本。 使用呈現的id名稱更改java腳本中的所有id。

+0

我檢查到頁面源名稱是'addfile':( – Neo

+0

不能,有些錯誤。 – unarity

0

我懷疑這可能是這一行:

<script type="text/javascript" src="_scripts/jquery-1.4.1.min.js"></script> 

這應該是:

<script type="text/javascript" src="/_scripts/jquery-1.4.1.min.js"></script> 
+0

都能跟得上,這並不重要,我想需要的東西用JavaScript – Neo

+0

改變也許你可以發佈你的ascx文件的其餘部分,所以我們可以看到標記? – rtpHarry

相關問題