我正在尝试使用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总是什么都没有?
谢谢!