0

ASP.NET/C# ページがあります。基本的に、ユーザー入力を受け入れるテキストボックスがあります。データはサーバー上で処理され、ファイルが生成されて保存されます。

最初に、を使用してクライアントにファイルを送信しましたResponse.TransmitFile()。ただし、このプロセスでは、ファイルのダウンロード時にページの JavaScript が無効になります。

そのため、ファイルのダウンロードに役立つ .ashx ハンドラーを設計しました。

現在、ページには 2 つのボタンがあります。ユーザーはファイルをクリックして処理し、ファイルを作成します。ページがポストバックすると、もう一方のボタンが有効になり、クリックしてファイルをダウンロードする必要があります (ハンドラーを呼び出します)。

私が知りたいのは、ボタンを接続してハンドラーを呼び出す方法です。

注: パラメータをクエリ文字列としてハンドラーに送信する必要があります。このパラメーターは、コード ビハインドでのみ使用できます。

4

2 に答える 2

1

特にボタンについて質問されていることは承知していますが、代わりに 2 番目のボタンをボタンのようなスタイルのハイパーリンクにして、NavigationUrl (または href) を .ashx パスに設定することもできます。ハンドラーのコードについていくつかの仮定を立てていますが、ハンドラーであるため、HTTP GET 要求を介して直接呼び出すことができます。

<asp:HyperLink ID="lnkDownloadFile" runat="server" NavigationUrl="/File.ashx?Id=1" Text="Download File" />

また

<a href="/File.ashx?Id=1">Download File</a>

コード ビハインドでパラメーターを設定する必要がある場合は、Page_Load などのライフサイクル イベントのいずれかで設定できます。

protected void Page_Load(object sender, EventArgs e)
{
     lnkDownloadFile.NavigationUrl = string.Format("/File.ashx?Id={0}", MyParameterValue);
}
于 2013-04-18T03:54:55.857 に答える
1

リクエストに対して特にボタンが必要な場合は、次のアプローチを取ることができます。

ASPX:

<asp:Button ID="btnDownloadFile" runat="server" OnClick="btnDownloadFile_Click" />

コード ビハインド:

protected void btnDownloadFile_Click(object sender, EventArgs e)
{
    Response.Redirect(string.Format("/File.ashx?Id={0}", MyParameter);
}
于 2013-04-18T04:08:01.750 に答える