所以我有一個GridView
與LinkButton
。 GridView
有一些文件正從目錄中提取並顯示給最終用戶。每個文件都有它自己的描述。每個文件也有一個下載按鈕,如果點擊該文件將下載。我傳遞了CommandArgument
如下LinkButton沒有發送正確的CommandArgument代碼
CommandArgument='<%# Eval("FileName") %>'
問題是,當我點擊下載按鈕,我得到一個錯誤Could not find file
。路徑應該是C:\\Documents\\Test\\someFile.pdf
而不是我得到的路徑爲C:\\Documents\\someFile.pdf
有沒有人知道我要去哪裏錯了?
代碼的其餘部分是低於
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FileName" HeaderText="File Name" />
<asp:BoundField DataField="FileDescription" HeaderText="Description" />
<asp:TemplateField HeaderText="View Details">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" Text="Download" Font-Bold="true" CommandArgument='<%# Eval("FileName") %>' runat="server" OnClick="DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Test/"));
List<FileDetails> files = new List<FileDetails>();
foreach (string filePath in filePaths)
{
string filename = Path.GetFileName(filePath);
files.Add(new FileDetails()
{
FileName = filename,
FileDescription = "This is a test file"
});
}
GridView1.DataSource = files;
GridView1.DataBind();
protected void DownloadFile(object sender, EventArgs e)
{
string filePath = (sender as LinkButton).CommandArgument;
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
Response.ContentType = "application/pdf";
Response.WriteFile(filePath);
Response.End();
}
我FileDetails
類有get
和set
兩個屬性。在此先感謝您的幫助。
你是一個生命的救星!謝謝 – Code 2014-11-25 15:18:01