gpt4 book ai didi

asp.net - 文件上传控件 HasFile 始终为 false,名称始终为 Empty String,未使用更新面板

转载 作者:行者123 更新时间:2023-12-04 13:53:54 25 4
gpt4 key购买 nike

我有一个包含文件上传字段的详细信息 View 。当我填写信息并上传文件(我尝试过从 9k 到 6.8MB 的多个文件)时,所有信息(文本字段)都可以正常提交,但是当我检查 HasFile 时上传的文件总是返回 false 并且总是当我检查文件名时返回 String.Empty。

难道我做错了什么?详细信息 View 位于面板和 不是更新面板

    <asp:Panel ID="pnlUpdate" runat="server"
Visible="false">
<h4 runat="server" id="h2SubCaption">Person Details</h4>
<asp:DetailsView ID="dvAssignment"
runat="server"
AutoGenerateRows="false"
Width="100%"
SkinID="SampleDetailsView"
CssSelectorClass="PrettyDetailsView"
DataKeyNames="guidMemberId"
DefaultMode="Edit"
OnItemUpdating="dvAssignment_ItemUpdating"
OnModeChanging="dvAssignment_ModeChanging"
AutoGenerateEditButton="True" >
<Fields>
<asp:TemplateField HeaderText="Nomination Letter">
<EditItemTemplate>
<asp:FileUpload runat="server" ID="fileuploadNomination" />
</EditItemTemplate>
</asp:TemplateField> .....

代码背后:
        FileUpload _nomination = (FileUpload)dv.FindControl("fileuploadNomination");
byte[] nominationByte = null;
if (_nomination.FileName != string.Empty)
nominationByte = _nomination.FileBytes;
//if(_nomination.HasFile)
//nominationByte = _nomination.FileBytes;

编辑
我添加了一个 Page_Load 调用,当我单击 DetailsView 的自动生成更新按钮时,它看起来好像页面正在回发。此回发可能会清除我的 FileUpload 字段。关于如何解决它的任何想法?

编辑#2 我现在在 DetailsView 周围放置了一个更新面板,并将回发触发器设置为 DetailsView(见下文),但它仍然无法正常工作,似乎在提交之前清除了上传控件。
<asp:UpdatePanel ID="updatePnl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnlUpdate" runat="server"
Visible="false">
<h4 runat="server" id="h2SubCaption">Person Details</h4>
<asp:DetailsView ID="dvAssignment"
runat="server"
AutoGenerateRows="false"
Width="100%"
SkinID="SampleDetailsView"
CssSelectorClass="PrettyDetailsView"
DataKeyNames="guidMemberId"
DefaultMode="Edit"
OnItemUpdating="dvAssignment_ItemUpdating"
OnModeChanging="dvAssignment_ModeChanging"
AutoGenerateEditButton="True" >
<FieldHeaderStyle Font-Bold="True" Width="150px" />
<Fields>


                            <asp:FileUpload runat="server" ID="fileuploadNomination" />
</EditItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView >
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="dvAssignment" />
</Triggers>
</asp:UpdatePanel>

Gridview 代码按要求
 <asp:GridView ID="gvQuality" 
runat="server"
AutoGenerateColumns="False"
Width="100%"
DataKeyNames="guidMemberId"
CssSelectorClass="PrettyGridView"
SkinID="SampleGridView"
OnSelectedIndexChanged="gvQuality_SelectedIndexChanged"
onrowdatabound="gvQuality_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnViewDetails" runat="server" Text="Edit" CommandName="Select" />
</ItemTemplate>
</asp:TemplateField>

在此之后有一些绑定(bind)字段(名字、姓氏等)
protected void gvQuality_SelectedIndexChanged(object sender, EventArgs e)
{
Guid guidMemberId = (Guid)gvQuality.SelectedDataKey.Values["guidMemberId"];
PortalDataContext db = new PortalDataContext(AuthenticatedUser.ConnectionString);
h2SubCaption.InnerText = "Update Person";
dvAssignment.ChangeMode(DetailsViewMode.Edit);

dvAssignment.DataSource = LINQ Query Here
dvAssignment.DataBind();
}

最佳答案

大家,感谢所有的帮助,但我想通了。我必须设置 Page.Form.Enctype = "multipart/form-data .

这是它工作的代码!

protected void Page_Load(object sender, EventArgs e)
{
this.Page.Form.Enctype = "multipart/form-data";
}

关于asp.net - 文件上传控件 HasFile 始终为 false,名称始终为 Empty String,未使用更新面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com