2009-04-09 14 views
0

J'essaie de télécharger un fichier dans VB.NET à l'aide d'un fichier HtmlInputFile, mais chaque fois que je le télécharge, le fichierFichierHtmlInputFile est Nothing.

Voici mon code ASP.NET:Le fichier n'affiche rien sur le fichier DataGrid.

 
    <form id="Form1" method="post" runat="server" enctype="multipart/form-data"> 
     <asp:DataGrid id="dgTitles" runat="server" OnUpdateCommand="dgUpdate" DataKeyField="ID"> 
      <Columns> 
      <asp:TemplateColumn HeaderText="Title" > 
       <ItemTemplate> 
        <asp:Label ID="lTitle" Runat="server"> 
         <%# DataBinder.Eval(Container, "DataItem.Title")%> 
        </asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="tTitle" Runat="server" text='<%# DataBinder.Eval(Container, "DataItem.Title")%>'> 
        </asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateColumn> 
      <asp:TemplateColumn HeaderText="Image"> 
       <EditItemTemplate> 
        <input id='fuEditImage' type="file" name="fuEditImage" runat="server" enctype="multipart/form-data" /> 
       </EditItemTemplate> 
      </asp:TemplateColumn 
      <asp:EditCommandColumn UpdateText="Update"> 
      </asp:EditCommandColumn> 
     </Columns> 
     </asp:DataGrid> 
    </form> 

Voici mon code VB.NET:

Sub dgUpdate(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) 
     Try 
      Dim Title = CType(e.Item.FindControl("tTitle"), TextBox).Text 
      Dim fuUpload As System.Web.UI.HtmlControls.HtmlInputFile = CType(e.Item.FindControl("fuEditImage"), _ 
       System.Web.UI.HtmlControls.HtmlInputFile) 

      If Not fuUpload.PostedFile Is Nothing Then 'This always = false 
       If Not fuUpload.PostedFile.FileName = "" Then 
        UploadImage(fuUpload) 
       End If 
      End If 
     Catch ex As Exception 
      'Handle Exception here 
     End Try 
    End Sub 

Lorsque je télécharge un fichier, fuUpload n'est pas rien, mais fuUpload.PostedFile est .
Le texte "Titre" entré est reconnu sans problème.
J'ai aussi essayé avec l'objet et la balise FileUpload, au lieu de la balise d'entrée et de HtmlInputFile-- même résultat.
est ici la sortie de fuUpload lorsque j'utilise une balise d'entrée & HtmlInputFile:

 
    {System.Web.UI.HtmlControls.HtmlInputFile} 
    Accept: "" 
    AppRelativeTemplateSourceDirectory: "~/app/admin/points/" 
    Attributes: {System.Web.UI.AttributeCollection} 
    BindingContainer: {System.Web.UI.WebControls.DataGridItem} 
    ClientID: "dgTitles__ctl4_fuEditImage" 
    Controls: {System.Web.UI.EmptyControlCollection} 
    Disabled: False 
    EnableTheming: True 
    EnableViewState: True 
    ID: "fuEditImage" 
    MaxLength: -1 
    Name: "dgTitles:_ctl4:fuEditImage" 
    NamingContainer: {System.Web.UI.WebControls.DataGridItem} 
    Page: {ASP.app_admin_points_pointtitles_aspx} 
    Parent: {System.Web.UI.WebControls.TableCell} 
    PostedFile: Nothing 
    Site: Nothing 
    Size: 45 
    SkinID: "" 
    Style: {System.Web.UI.CssStyleCollection} 
    TagName: "input" 
    TemplateControl: {ASP.app_admin_points_pointtitles_aspx} 
    TemplateSourceDirectory: "/community/app/admin/points" 
    Type: "file" 
    UniqueID: "dgTitles:_ctl4:fuEditImage" 
    Value: "" 
    Visible: True 

Voici la sortie de fuUpload si j'utilise un objet FileUpload et tag:

 
    {System.Web.UI.WebControls.FileUpload} 
    AccessKey: "" 
    AppRelativeTemplateSourceDirectory: "~/app/admin/points/" 
    Attributes: {System.Web.UI.AttributeCollection} 
    BackColor: "{Name=0, ARGB=(0, 0, 0, 0)}" 
    BindingContainer: {System.Web.UI.WebControls.DataGridItem} 
    BorderColor: "{Name=0, ARGB=(0, 0, 0, 0)}" 
    BorderStyle: NotSet {0} 
    BorderWidth: {System.Web.UI.WebControls.Unit} 
    ClientID: "dgTitles__ctl4_fuEditImage" 
    Controls: {System.Web.UI.ControlCollection} 
    ControlStyle: {System.Web.UI.WebControls.Style} 
    ControlStyleCreated: True 
    CssClass: "" 
    Enabled: True 
    EnableTheming: True 
    EnableViewState: True 
    FileBytes: {Length=0} 
    FileContent: {System.IO.Stream.NullStream} 
    FileName: "" 
    Font: {System.Web.UI.WebControls.FontInfo} 
    ForeColor: "{Name=0, ARGB=(0, 0, 0, 0)}" 
    HasAttributes: False 
    HasFile: False 
    Height: {System.Web.UI.WebControls.Unit} 
    ID: "fuEditImage" 
    NamingContainer: {System.Web.UI.WebControls.DataGridItem} 
    Page: {ASP.app_admin_points_pointtitles_aspx} 
    Parent: {System.Web.UI.WebControls.TableCell} 
    PostedFile: Nothing 
    Site: Nothing 
    SkinID: "" 
    Style: {System.Web.UI.CssStyleCollection} 
    TabIndex: 0 
    TemplateControl: {ASP.app_admin_points_pointtitles_aspx} 
    TemplateSourceDirectory: "/community/app/admin/points" 
    ToolTip: "" 
    UniqueID: "dgTitles:_ctl4:fuEditImage" 
    Visible: True 
    Width: {System.Web.UI.WebControls.Unit} 

Quelqu'un peut-il me dire ce que je fais mal? Pourquoi est-ce que PostedFile n'est toujours rien?
Merci!

Répondre

1

Est-ce que vous le faites dans un panneau de mise à jour Ajax Ajax par hasard?

Dans ce cas, que diriez-vous de ce link?