2013-08-28 49 views
0

我有一個可以在瀏覽器中很好呈現的打印就緒視圖。向用戶提供點擊位於該視圖上的鏈接或按鈕的選項會很好,該鏈接或按鈕將調用視圖中的原始HTML創建PDF的操作。我有PDF處理部分想通了,我只需要幫助搞清楚:當點擊按鈕時輸出當前的html視圖爲字符串

  1. 當用戶點擊鏈接或按鈕,把呈現的HTML從該視圖爲一個字符串變量要發送到我的PDF處理代碼。

這裏是呈現頁我的控制器方法:

public ActionResult ViewReport(int? id, string memberID, int month, int year) 
{ 
      var task = new ViewReportTask(); 


      return View(task.BuildViewModel(id, memberID, month, year)); 
    } 

的觀點只是很多html和剃刀代碼塊,所以我這裏沒有包括它。

感謝

+0

你的意思是呈現的HTML?正是您在頁面上查看源代碼中看到的內容? –

+0

是的,確切地說。只是在視圖中呈現的html – Slinky

回答

1

我使用以下方法:

你必須產生你的瀏覽操作方法:

public ActionResult ViewReport(int? id, string memberID, int month, int year) 
{ 
      var task = new ViewReportTask(); 
      return View(task.BuildViewModel(id, memberID, month, year)); 
    } 

再創建一個的ActionResult:

public ActionResult PrintMyView(int? id, string memberID, int month, int year) 
    { 
     return new ActionAsPdf("ViewReport", new { id= id; memberID=memberID; month=month; year=year}) 
{ FileName = "ViewReport.pdf"}; 
    } 

要使ActionAsPdf您需要安裝的方法10 NuGet包:

安裝,包裝Rotativa

我們保存網頁爲PDF,用戶必須點擊你的看法以下鏈接:

@Html.ActionLink("Save as PDF, "PrintMyView", "Home", new{id= id, memberID=memberID, month=month, year=year}, null) 
//** I can't see where you takes parameters in your view, so I just list them. 

它工作正常的我。

+0

在你的例子中,你不需要逗號而是分號嗎?新{id = id,memberID = memberID,month = month,year = year} – Slinky

+0

@Slinky謝謝,我編輯了它。 –