I thought that this was easier…
I have a asp:hyperlink control, with target=”_blank”
, pointing to the file I want the user to download. My plan is to track the number of times, the users click on this link.
I thought in placing it in ajax update panel, to catch the postback and avoid full page refresh.
However, hyperlink doesn’t have a onClick
method.
On the other hand I could use a linkbutton
, which h开发者_运维百科as a onClick
built in. But It’s harder to make the file open in a new window… and I would also have to do something like:
Response.AppendHeader("Content-Disposition","attachment; filename=myImage.jpg");
But I heard that the above approach has some problems with PPT, PPTX, PPS, PPSX…
What is you'r opinion on this? How and why, would you do it?
You might want to implement an IHttpHandler to track your downloads, as shown in this article for example.
Basically your handler's ProcessRequest() method would look something like this:
public void ProcessRequest(HttpContext context)
{
string file = context.Request.QueryString["file"];
// set content type and header (PDF in this example)
context.Response.ContentType = "application/pdf";
context.Response.AddHeader(
"Content-Disposition", "attachment; filename=" + file);
// assuming all downloadable files are in ~/data
context.Response.WriteFile(Server.MapPath("~/data/" + file));
context.Response.End();
}
Then your hyperlink to download a file would be like this:
<a href="/MyApp/MyHandler.ashx?file=someFile.pdf">...</a>
You can add an onclick
to an asp hyperlink like so:
aHyperlinkControl.Attributes.Add("onclick", "jsCallToSendCountToServer();");
精彩评论