0

私は LinkBut​​ton を持つページを持っています。私の要件は、'DownLoad;' をクリックしたときです。Linkbutton ページは別のページにリダイレクトする必要があり、そこにファイルがダウンロードされ、Web ページのアドレス バーに、クエリ文字列の値をリダイレクトしているページが表示されるはずです。どうすればいいのか教えてください。助けてください。

ここに私のコードがあります

FirstPage.aspx

 protected void LinkButton1_Click(object sender, EventArgs e)
    {

        Response.Redirect("Default2.aspx?filename=Csharp/CSharp.txt");              
    } 


ダウンロード.aspx

 protected void Page_Load(object sender, EventArgs e) <br/>

    {
        string filename = Request.QueryString["filename"];
        Response.ContentType = "text";
        Response.AppendHeader("Content-Disposition", "attachment; filename=CSharp.txt");
        Response.TransmitFile(Server.MapPath(filename));
        Response.End(); 
    }

Download.aspx ページ イベントのすべてのイベントでこのコードを使用しましたが、できませんでした。注:クエリ文字列を使用する必要があり、リダイレクトされたページとクエリ文字列の値がダウンロード前にアドレスバーに表示される必要があるという要件があります。

4

1 に答える 1

1

追加のフラグを使用して、実際のダウンロードを行う必要があることを示します。その間、「お待ちください」メッセージを表示できます。このような:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="refresh" content="3; url=<%=HttpUtility.HtmlAttributeEncode(Request.Url.OriginalString + &IsDownloading=true")%>">
  </head>

  <body>
    <h2>Your download will start shortly...</h2>
  </body>
</html>

分離コード:

protected void Page_Load(object sender, EventArgs e)
{
    if(string.Compare((Request.QueryString["IsDownloading"] ?? string.Empty).Split(new char[] { ',' }).First(), "true", StringComparison.InvariantCultureIgnoreCase) == 0)
  {
    // Make a file transfer
  }
}
于 2012-07-25T06:58:03.107 に答える