2012-11-30 37 views
4

蝙蝠:我是新來使用asp.net mvc的4ASP.NET MVC 4重定向回索引視圖

我有一個創建一個Excel文件,一個動作,然後將其轉換爲PDF。

從查看

@Html.ActionLink("Generate Invoice", "genInvoice", new { id = item.invoiceID }) | 

操作:

public ActionResult genInvoice(int id = 0) 
    { 
     var invoiceItems = from k in db.InvoiceItems 
          where k.invoiceID == id 
          select k; 

     string invoiceClient = (from kk in db.Invoices 
           where kk.invoiceID == id 
           select kk.clientName).Single(); 


     invoiceClient = invoiceClient + "_" + DateTime.Now.ToString("ddd dd MMM yyyy hhTmm"); 
     string websitePath = Request.PhysicalApplicationPath; 
     string pathName = websitePath + "\\" + invoiceClient ; 
     generateInvoice(invoiceItems, pathName + ".xlsx", id); 
     convertToPDF(pathName, invoiceClient); 

//Response.AppendHeader("Content-Disposition", "attachment"); 

      var viewModel = new InvoiceItemAdd(); 
      viewModel.Invoices = db.Invoices 
       .Include(i => i.InvoiceItems) 
       .OrderBy(i => i.invoiceID); 
     return View("Index", viewModel); 
     //return RedirectToAction("Index",viewModel); 


    } 

現在我想最終下載PDF文件,然後返回索引視圖。 它進入索引視圖打印HTML等等,但隨後窗口停留在一個白色的屏幕與URL:/發票/ genInvoice/1

任何想法我可以去做這個? (回到PDF生成後的索引視圖,也下載它)

+0

爲什麼不將整個viewModel部件移動到索引控制器? – jao

+0

var viewModel = new InvoiceItemAdd(); (i => i.InvoiceItems) .OrderBy(i => i.invoiceID); 那部分?它在那裏,但是當我稱之爲視圖時說模型是空的 –

回答

1

對不起,我修復了白屏問題。雖然試圖做PDF下載

//Response.AppendHeader("Content-Disposition", "inline; filename="+invoiceClient+".pdf"); 
      //Return File(output, "application/pdf"); 
      //Response.Flush(); 

      //Response.End(); 

Response.End()沒有被註釋掉,我停止了它。

現在的問題是如何打開PDF在一個單獨的選項卡,並返回索引在當前 與上述代碼。編輯: 決定文件只能被下載。

public FileResult genInvoice(int id = 0) 
{ 
//More code 
Response.AppendHeader("Content-Disposition", "attachment; filename="+pathName+".pdf"); 
return File(websitePath + "\\" + invoiceClient + ".pdf", "application/pdf"); 
} 
+0

嘗試將它從'ActionResult'更改爲'FileStreamResult'或'FileResult',這將確保文件被下載而不返回白色屏幕。 – jao

+0

好的,謝謝,這將打開很好的PDF。但我希望它在單獨的選項卡中打開pdf,並保留在當前索引頁上 –

+0

您可以在鏈接中添加一個target =「_ blank」以實現該目標。但我期望該文件將下載,並且您將不會被重定向到具有上述代碼的另一個(空白)頁面 – jao