PostedFile在DataGrid文件上传中没有任何内容

时间:2009-04-09 21:09:17

标签: asp.net vb.net file-upload

我正在尝试使用HtmlInputFile在VB.NET中上传文件,但每次上传时,HtmlInputFile的PostedFile都没有。

这是我的ASP.NET代码:

    <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>

这是我的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

当我上传文件时,fuUpload不是Nothing,但fuUpload.PostedFile是。
输入的“标题”文本被识别没有问题 我也尝试过FileUpload对象和标签,而不是输入标签和HtmlInputFile--结果相同。
当我使用输入标签&amp;时,这是?fuUpload的输出。 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

如果我正在使用FileUpload对象和标记,那么这是?fuUpload的输出:

    {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}

谁能告诉我我做错了什么? 为什么PostedFile总是什么都没有?
谢谢!

1 个答案:

答案 0 :(得分:1)

你是否有机会在asp.net Ajax更新面板中这样做?

在这种情况下,link怎么样?