2010-07-17 103 views
0

我試圖將控件添加到ASP.NET頁面。控件已成功添加,但無法從後面的代碼訪問。在下面的示例中,單擊Button1時,「上傳」中沒有元素(輸入HttpFileCollection)。使用jQuery將控件添加到ASP.NET

這裏是我的加價:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="add-remove-control.aspx.vb" 
    Inherits="APIU.Web.add_remove_control" %> 

<!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 src="_Assets/scripts/jquery.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(function() { 

      var i = 1; 
      //allow only 3 elements 

      $('#add').click(function() { 
       if (i < 4) { 
        var add_input = '<input type="file" id="' + 'dynamic:' + i + '" name="' + 'dynamic:' + i + '" />' 
        var add_link = '<a href="#" class="remove">Remove</a>' 
        $('body').append('<p>' + add_input + add_link + '</p>'); 
        i++; 
       } 
      }); 

      $('.remove').live('click', function() { 
       $(this).parent('p').remove(); 
       i--; 
      }); 


     }); 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <a href="#" id="add">Add</a> 

     <asp:Button ID="Button1" runat="server" Text="Button" /> 
     <br /> 
     <p> 
      &nbsp;</p> 
    </div> 
    </form> 
</body> 
</html> 

後面的代碼:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
     Dim uploads As HttpFileCollection 
     uploads = HttpContext.Current.Request.Files 

     Dim sfile As String 


     For i As Integer = 0 To (uploads.Count - 1) 

      If (uploads(i).ContentLength > 0) Then 
       Dim c As String = System.IO.Path.GetFileName(uploads(i).FileName) 

       Try 
        uploads(i).SaveAs("C:\UploadedUserFiles\" + c) 

        sfile += uploads(i).FileName & "<br/>" 

       Catch Exp As Exception 

       End Try 

      End If 

     Next i 


    End Sub 

爲什麼會出現在 「上傳」(類型HttpFileCollection)沒有元素?

回答

0

它不顯示服務器端的是這裏的原因:

$('body').append('<p>' + add_input + add_link + '</p>'); 

這追加到<body>元素,這是最重要的<form> ......所以你的輸入使用不包含在POST中。追加元素到<form>代替,就像這樣:

$('form').append('<p>' + add_input + add_link + '</p>'); 

這是一個.dialog()裏面調用同樣的原因,投入要素沒有得到在ASP.Net提交,再次它的移動之前</body></form> ...您需要.dialog().parent().appendTo('form')出於同樣的原因。

+0

我添加了一個像這樣的div,

,我將控件追加到$('#upload-contorl')。append('

'+ add_input + add_link +'

');我可以將控件附加到div,但仍然不會在控制器上顯示控件。如果嘗試在jQuery中添加屬性runat =「server」,則標記不會得到渲染並且會拋出錯誤。 – Narazana 2010-07-17 23:28:56

+0

@Morron - 不需要'runat =「server」'這是一個不同的交易。你的表單可能有錯誤的編碼,把它加到你的'

'標籤:'enctype =「multipart/form-data」',如下所示:'' – 2010-07-17 23:43:33