2010-07-17 5 views
0

Я пытаюсь добавить элемент управления на страницу ASP.NET. Элементы управления добавляются успешно, но не имеют доступа к коду. В примере ниже, когда нажата кнопка Button1, в «uploads» нет элемента (введите HttpFileCollection).Добавление управления в ASP.NET с помощью jQuery

Вот моя наценка: за

<%@ 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, но все же элементы управления не будут отображаться на обочине. Если попытаться добавить атрибут runat = "server" в jQuery, то разметка не получит рендеринга и это приведет к ошибке. – Narazana

+0

@Morron - Не нужно для 'runat =" server "' это другое дело. Однако ваша форма имеет неправильную кодировку, добавьте ее в свой '

' тег: 'enctype =" multipart/form-data "', например: ' ' –

Смежные вопросы