2016-03-21 36 views
0

的各個環節分配的路徑我有我的觀點。我的代碼打開同一文檔,所有這一切是錯誤的鏈接,顯示多個PDF文檔。在ASP MVC

在我的位指示:

public ActionResult Docs() 
{ 
    var docModel = this._documentBuilder.Build(this.StateData); 
    foreach (var doc in docModel.OldEstimateFiles) 
    { 
     return this.File(doc.PdfUrl, "application/pdf"); 
    } 
    return null; 
} 

,並在視圖:

foreach (var menuItem in Model.OldEstimateFiles) 
{ 
    <ul > 
     <li> 
      @using (Html.Anchor(new ststyle { URL = "/DocumentEstimate/Docs", Target = "_blank", Text = menuItem.Label })) 
      { 
      } 
     </li> 
    </ul> 
} 

什麼是錯在我的代碼知道oldestimatefiles是

+6

您的控制器方法'return'語句(即存在的出口在第一次迭代的方法,只返回第一個文件。你方法需要一個參數來識別文件,讓你返回一個特定的文件 –

+0

那太好了我同意,但如何調用它的錨視圖 – YosrJ

+1

我不知道'Html.Anchor()'是 - 它不是MVC的一部分,你如何識別您的身份文件使用的標準?幫手,這將是'@ Html.ActionLink( 「顯示名」, 「文檔」, 「controllerName」,新{ID = someIdentifier},NULL)'和方法將是'公共FileResult文檔(INT ID)'然後您根據ID值返回文件。 –

回答

0

我編輯我的動作在控制器列表接收身份證。

public ActionResult Docs(string id) 
     { 
      var docModel = this._documentBuilder.Build(this.StateData); 
     return docModel.OldEstimateFiles.Any() ? this.File(docModel.OldEstimateFiles.Find(p => p.ID == id).PdfUrl, "application/pdf") : null; 
     } 

我加了採取在URL中的文件的ID routeConfig文件中的條目,並在視圖我編輯我的鏈接:

@using (Html.Anchor(new ststyle 
       { 
        URL = "/DocumentEstimate/EstimateDocs/" + menuItem.ID, 
        Id = menuItem.ID 

它解決了問題。