Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有预设置的ASP.NET文件上载(回发后为空)_C#_Asp.net_Autopostback - Fatal编程技术网

C# 带有预设置的ASP.NET文件上载(回发后为空)

C# 带有预设置的ASP.NET文件上载(回发后为空),c#,asp.net,autopostback,C#,Asp.net,Autopostback,我想创建一个带有ASP.NET文件上传控件、一些文本框和提交按钮的C#WebForm。想法:用户选择一个文件,输入一些数据,在提交表单时检查数据,如果有效,它会将文件保存在服务器上,否则会显示一条错误消息。有很多关于UpdatePanel触发器等的帖子,但没有一个有效的解决方案 下面是我的代码: 受保护的无效页面加载(对象发送方,事件参数e){ //用于UpdatePanel外部的文件上载控件 Page.Form.Attributes.Add(“enctype”、“多部分/表单数据”); } 受

我想创建一个带有ASP.NET文件上传控件、一些文本框和提交按钮的C#WebForm。想法:用户选择一个文件,输入一些数据,在提交表单时检查数据,如果有效,它会将文件保存在服务器上,否则会显示一条错误消息。有很多关于UpdatePanel触发器等的帖子,但没有一个有效的解决方案

下面是我的代码:

受保护的无效页面加载(对象发送方,事件参数e){
//用于UpdatePanel外部的文件上载控件
Page.Form.Attributes.Add(“enctype”、“多部分/表单数据”);
}
受保护的无效按钮1\u单击(对象发送者,事件参数e){
bool valid=true;
string errorMessage=DateTime.Now.ToLongTimeString()+“:”;
if(this.TextBox1.Text.Equals(“”){
有效=错误;
errorMessage+=“缺少文本框1
”; } if(this.TextBox2.Text.Equals(“”){ 有效=错误; errorMessage+=“缺少文本框2
”; } if(this.TextBox3.Text.Equals(“”){ 有效=错误; errorMessage+=“缺少文本框3
”; } 如果(!this.FileUpload3.HasFile){ //永远都是假的! errorMessage+=“缺少文件上载3
”; } 如果(有效){ //永远不要激发,因为.HasFile始终为false this.Label1.Text=“有效!”; //上传东西吗 这个.FileUpload3.SaveAs(“foobar”); }否则{ this.Label1.Text=错误消息; } }
这是我的ASPX示例:



有人知道为什么我的FileUpload总是空的,尽管它在UpdatePanel之外,并且我在Page_Load()事件中有必需的行吗?如果可以,你能调整代码吗

多谢各位 SiS




FileUpload控件需要完全回发,因此请确保
按钮1
触发一次回发。我在UpdatePanel中添加了一个,但这并不能解决我的问题:如果我选择了一个文件,但遗漏了TextBox3,则在页面刷新后,FileUpload将为空。我希望FileUpload保留其数据,但显示错误文本。FileUpload不是这样工作的。如果TextBox3为空,您需要将文件存储在服务器上的临时文件夹中。@VDWWD这是一种很好的方法-除非允许的文件不是很大(例如,几百MB)。在这种情况下,用户在上传文件之前(可能会让电脑无人看管)只会返回一条消息,在返回后查看错误。我认为使用UpdatePanel,我只能有一些控件受页面刷新/回发的影响?1,你应该在UpdatePanel标记内,2:如果我选择了一个文件,但遗漏了textbox3,它仍然会清除FileUpload-Control。请尝试此代码…检查并在控件内使用后
<form id="Upload" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:FileUpload ID="FileUpload3" runat="server" />

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>
   <Triggers>
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>