5 に答える
正しい方法は、リンク ボタンをページにドラッグ アンド ドロップして追加し、このボタンのプロパティに移動して OnClick メソッドを追加することです。これにより、DownloadFile を実行するコード ビハインドで自動化関数も作成されます。
直接アンカータグにする必要があるという事実に柔軟に対応でき、「ボタン」として作成することを気にしない場合は、次を使用できます。
コード ビハインド関数を呼び出すコード ビハインドの ASP.Net ボタン
そうでない場合は、JavaScript とポストバックを使用して同様の機能を実現するソリューションを次に示します。個人的には、上記のボタン ソリューションを使用する方がより柔軟で、必要なものに近いと思います。
1) LinkButtonを使用してみてください。
2) 引数を返すことはできません。サーバーでデータを取得する必要があります。
このJavaScriptをASPXページに配置します。
<script type="text/javascript">
function DownloadFile() {
document.getElementById(<%= DownloadFile.ClientID%>).click();
}
</script>
表示スタイルが非表示のdivタグ内にボタンを配置します。JavaScriptはページ上でボタンを見つけることができないため、ボタンの表示スタイルを非表示に設定しないでください。
<div style="display= hidden;">
<asp:button id="DownloadFile" runat="server" />
</div>
次に、<a>
以下に示すようにタグを設定します。
<a href="javascript:DownloadFile();">link text</a>
次に、サブルーチンをasp:buttonのクリックイベントとして使用します
そうは言っても、asp:linkbuttonオプションを使用すると、コードが大幅に少なくなります。
アンカー タグをサーバー コントロールとして使用する場合は、onServerClick イベントを設定する必要があります。アンカーにカスタム タグを追加して使用することができます。
<a id="hypDownload" href="javascript:void(0);" runat="server" onserverclick="DownloadFile()" filename="files/Notes.doc" forcedownload="true"></a>
Private Sub hypDownload_ServerClick(sender As Object, e As EventArgs) Handles hypDownload.ServerClick
Dim filename As String = hypDownload.Attributes("filename") 'Also: CType(sender, HtmlAnchor).Attributes("filename")
Dim forcedownload As Boolean = hypDownload.Attributes("forcedownload").ToString().ToLower() = "true"
DownloadFile(filename, forcedownload)
End Sub