Отправленный файл - ничто на загрузке файла DataGrid - PullRequest
0 голосов
/ 10 апреля 2009

Я пытаюсь загрузить файл в VB.NET, используя HtmlInputFile, но каждый раз, когда я загружаю, файл Postscript для HtmlInputFile - это ничто.

Вот мой код 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 вместо тега input и HtmlInputFile - тот же результат.
Вот вывод? 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

Вот вывод? FuUpload, если я использую объект FileUpload и тег:

    {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 Ответ

1 голос
/ 10 апреля 2009

Вы делаете это на панели обновления Ajax asp.net случайно?

В таком случае, как насчет этой ссылки ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...