2015-03-13 139 views
0

我已经在控制器中生成了一个操作结果,该控制器将生成一个excel文件,并且通过@ url.Action helper将它传递给按钮中的一个View,但是当我点击它所说的按钮:来自ActionResult的“无法找到资源”

'/'应用程序中的服务器错误。

无法找到该资源。

说明:HTTP 404.您正在查找的资源(或其某个依赖项)可能已被删除,名称已更改或暂时不可用。请回复以下URL并确保它拼写正确。

请求的URL:/报告/ PinpointReport

Controller.cs代码

public ActionResult PinpointReport(DateTime Period) 
{ 
    try 
    { 
     byte[] fileBytes = System.IO.File.ReadAllBytes("Test") 
     return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, "test,xlsx"); 
    } 
    catch(Exception ex) 
    { 
     ViewBag.ErrorMessage = "An error occurred loading the report: " + ex.Message; 

     string errorString = ex.ToString(); 
     return Json(new 
     { 
      error = errorString 
     }); 
    } 
} 

Reports.cshtml代码

这正是我打电话给我的行动结果

<input type="button" value="View Total Revenue" onclick="location.href='@Url.Action("PinpointReport", "Report")'" /> 

public ActionResult ExportToExcel() 
{ 
    var products = new System.Data.DataTable("test"); 
    products.Columns.Add("col1", typeof(int)); 
    products.Columns.Add("col2", typeof(string)); 

    products.Rows.Add(1, "product 1"); 
    products.Rows.Add(2, "product 2"); 
    products.Rows.Add(3, "product 3"); 
    products.Rows.Add(4, "product 4"); 
    products.Rows.Add(5, "product 5"); 
    products.Rows.Add(6, "product 6"); 
    products.Rows.Add(7, "product 7"); 


    var grid = new GridView(); 
    grid.DataSource = products; 
    grid.DataBind(); 

    Response.ClearContent(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xlsx"); 
    Response.ContentType = "application/vnd.ms-excel"; 

    Response.Charset = ""; 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 

    grid.RenderControl(htw); 

    Response.Output.Write(sw.ToString()); 
    Response.Flush(); 
    Response.End(); 

    return View("Reports"); 
} 
+0

u能告诉我们按一下按钮的代码分别üR IN UrlAction – 2015-03-13 19:09:40

+0

调用PinpointReport“测试”是不是一个有效的文件路径。 – DLeh 2015-03-13 19:57:03

+0

对不起,我想我把代码 - 这是我打电话给ActionResult的地方: idreamgeek 2015-03-14 00:35:10

回答

1

在你的评论中,你不是传递日期时间参数在你的行动,试试这个:

<input type="button" value="View Total Revenue"onclick="location.href='@Url.Action("PinpointReport", "Report", new { Period = 'some date' })'" /> 
+0

谢谢大家的回复 - 我只是尝试了另一种方法,通过使用我在网上找到的另一个函数,这似乎工作,虽然现在我得到一个格式错误时试图打开文件,但至少现在我打开一个文件,而不会将用户重定向到其他任何地方,这正是我原本打算做的。 – idreamgeek 2015-03-16 02:45:32