2017-06-02 20 views
0

ASP.NET FileUploadコントロールといくつかのテキストボックスと送信ボタンを使用してC#WebFormを作成したいと思います。アイデア:ユーザーがファイルを選択し、いくつかのデータを入力します。フォームを送信すると、データがチェックされ、有効な場合はサーバーにファイルが保存されます。そうでない場合、エラーメッセージが表示されます。 UpdatePanelトリガーなどについては非常に多くの記事がありますが、実際の解決策はありません。ASP.NET FileUpload with precondtions(PostBack後に空白)

ここでは背後に私のコード:

protected void Page_Load(object sender, EventArgs e) { 
    // for FileUpload-Control outside UpdatePanel 
    Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
} 

protected void Button1_Click(object sender, EventArgs e) { 
    bool valid = true; 
    string errorMessage = DateTime.Now.ToLongTimeString() + ": "; 

    if (this.TextBox1.Text.Equals("")) { 
     valid = false; 
     errorMessage += "Missing Textbox1<br/>"; 
    } 
    if (this.TextBox2.Text.Equals("")) { 
     valid = false; 
     errorMessage += "Missing Textbox2<br/>"; 
    } 
    if (this.TextBox3.Text.Equals("")) { 
     valid = false; 
     errorMessage += "Missing Textbox3<br/>"; 
    } 
    if (!this.FileUpload3.HasFile) { 
     // is alway false! 
     errorMessage += "Missing FileUpload3<br/>"; 
    } 

    if (valid) { 
     // never fires, because .HasFile is always false 
     this.Label1.Text = "valid!"; 

     // do upload stuff 
     this.FileUpload3.SaveAs("foobar"); 
    } else { 
     this.Label1.Text = errorMessage; 
    } 
} 

そして、ここでは私のサンプルASPXです:

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

私のFileUploadは常に空である理由、それはUpdatePanelの外だが、誰もが、見ないと私は持っていますPage_Load()イベントの必須行?もしあなたがコードを調整できたら?

が のSiS

+0

ありがとうのFileUploadコントロールは、完全なポストバックを必要とするので、 'Button1'は1をトリガーすることを確認してください。 – VDWWD

+0

私はUpdatePanel内にを追加しましたが、これは私の問題を解決しません。ファイルを選択してもTextBox3を逃した場合、ページ更新後にFileUploadは空です。私はFileUploadがそのデータを保持するが、エラーテキストを表示したい。 – StehtimSchilf

+0

これはFIleUploadの仕組みではありません。 TextBox3が空の場合は、サーバー上の一時フォルダにファイルを保存する必要があります。 – VDWWD

答えて

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

+0

第1に、はUpdatePanel-Tagの2番目にあります。ファイルを選択したが、textbox3を見逃しても、FileUpload-Controlはクリアされます。 – StehtimSchilf

+0

このコードを試してください....チェック後コントロール内でが使用されています – mitul