我有一个Kendo网格,第一列是超链接。每个超链接绑定到一个pdf文件名。pdf文件将在项目文件夹中。MVC Kendo网格动作链接
网:
File Name Date
----------------|--------
file1.pdf |12.03.2014
file2.pdf |13.03.2014
现在闻一点击这个链接“file1.pdf”我要传递给模型此文件名。此操作链接应该有一个'GetPdf'操作,它将返回PDFResult。点击此链接后,相应的pdf文件应在<object>
标签的同一页面中打开。同样的方式,如果我点击第二个链接,然后file2.pdf应该打开里面的对象标签与出postpostback。如何实现这一点??这是我的代码。 我的观点:
@(Html.Kendo().Grid<Myproject.Models.PdffilesModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.FileName)
.ClientTemplate(
"<a href='" +
@Html.ActionLink("#=FileName#'", "GetPdf", "Home")+
"/#= FileName #" +
"</a>");
columns.Bound(c => c.CreatedDate).Width(70);
})
.HtmlAttributes(new { style = "height: 350px;" })
.Scrollable()
.Groupable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(1))
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Read(read => read.Action("Customers_Read", "Home"))
)
)
的HomeController://这里我硬编码的文件名,但它应该是来自超级链接的点击动作
public FileStreamResult GetPdf(string filenmae)
{
FileStream fs = new FileStream("/pdfSample.pdf", FileMode.Open, FileAccess.Read);
return File(fs, "application/pdf");
}
数据源到网格绑定:
public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)
{
return Json(GetAttachments().ToDataSourceResult(request));
}
private static IEnumerable<PdffilesModel>GetAttachments()
{
IEnumerable<PdffilesModel> finalresult ;
List<PdffilesModel> list= new List<PdffilesModel>();
var northwind = new PdffilesModel();
northwind.FileName = "file1.pdf";
northwind.CreatedDate = new DateTime(2014,03,04).ToString("d");
list.Add(northwind);
finalresult = list;
return finalresult;
}
这是当点击网格动作链接时,对象标签应该与pdf结果绑定。
<object class="pdfdiv" id="ajaxpdf" data="@Url.Action("GetPdf")"></object>