2011-07-12 3 views
0

簡単にするために、私は単純な2パネルマルチビューを持っています。最初のファイルにはFileUploadコントロールがあり、2番目には添付ファイルとして電子メールを送信するボタンがあります。 2番目のタブで "FileUpload1.HasFile"をチェックすると、falseに戻ります。また、View 1に戻ると、空白のファイルアップロードを除いて、他のコントロールのすべての状態が正しく維持されています。ASP.net FileUploadコントロールはマルチビューパネルで状態を維持しません

<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0"> 
    <asp:View ID="Step1" runat="server"> 
     <asp:FileUpload ID="FileUpload1" runat="server" Width="450" EnableViewState="true" /> 
    </asp:View> 
    <asp:View ID="Step2" runat="server"> 
     <asp:Button ID="btnSubmitForm" runat="server" Text="Submit Data" onclick="btnSubmitForm_Click" /> 
    </asp:View> 
</asp:MultiView> 

ユーザーは2を表示するためにナビゲートし、ボタンをクリックする:任意のアイデアを

//Initialize smtp server 
      SmtpClient smtp = new SmtpClient("myHost"); 

      //Initialize mail message object 
      MailMessage mail = new MailMessage(); 

//Set all mail message params (to, cc, subject etc...) 

//attach file, this is where it fails to recognize the attached document. bool is false :(
if (FileUpload1.HasFile) 
{ 
mail.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName)); 
} 

???

答えて

1

ファイルのアップロードは機密保護とみなされます。ユーザーがアップロードするファイルを選択すると、他のリダイレクトの前にフォームの送信が行われます。ブラウザが状態から値を "復元"できるようにするには、古くからのファイル釣りにつながる可能性があります。これは、サイトに、事前設定された値を持つ非表示のファイルアップロードコントロールを持つフォームが存在する場所です。ユーザーがフォームを送信すると、ブラウザがファイルをアップロードします(存在する場合)。

最新のセキュリティ標準によってこれらの試みがブロックされます。ユーザーがファイルをアップロードする場合は、新しいページに移動することはできません。 1つのページですべてをやり直すか、またはページの移動中にアップロードしたファイルを取り出して、ある場所に保存して、新しいページに一意のIDを返し、そのページを提出すると2つを結びつけることができます。そして、クリックした人、または2ページ目を続行しない人のクリーンアップを実装します。

関連する問題