2012-10-18 72 views
0

用戶上傳一個文件,然後由醫生審查。醫生然後上傳他的文件,說明他們的評論,然後用戶可以閱讀文件。至少,他們應該能夠。當醫生上傳文件時,會在用戶文件夾內創建一個新目錄,並將該項目上傳到該文件夾​​中。C#/ ASP.NET ActionLink /函數/錯誤鏈接

現在的錯誤。在詳細信息頁面上,用戶看到有一個文件鏈接需要下載,以便他們可以閱讀醫生的筆記。但是當他們點擊鏈接時,鏈接會回到404。我們發現,如果我們從Review文件夾中移除該文件並將其放入主用戶目錄中,則鏈接現在可以正常工作。顯然,這個鏈接並沒有指向正確的位置,但是因爲我不知道.NET或C#,這已被證明是一件非常煩人的事情。

下面是從Details.cshtml頁面原代碼的一部分:

<table> 
     <tr> 
      <th colspan="4" class="display-label">Uploaded Documents</th> 

     </tr> 
      <tr> 
       <th>FileName</th> 
       <th>Download Files</th> 
      </tr> 
      @foreach (var file in ((IEnumerable<MyCombinedQueryModel>)ViewBag.Files)) 
      {<tr> 
       <td> 
         @Html.ActionLink("Download", "Download", new { id = Model.PatientsId, name = file.FileName }) 
       </td> 
       <td> 
         @file.FileName 
       </td> 
      </tr> 

      }<tr> 
      <th colspan="4" class="display-label">Download reviewer suggestion document</th></tr> 
     <tr> 
      <th>FileName</th> 
      <th>Download Files</th> 
     </tr> 
      @if(Model.reviewed) 
      { 
       foreach (var file in ((IEnumerable<MyCombinedQueryModel>) ViewBag.Path)) 
       { 
        <tr> 
          <td> 
           @Html.ActionLink("Download", "Download", new {id = Model.PatientsId, name = file.FileName}) 
          </td> 
          <td> 
           @file.FileName 
          </td> 
        </tr> 
       } 
      } 

</table> 

而部分來自DoctorsController.cs

//Download files string names 
    public ActionResult Download(int? id, string name) 
      { 


       string fileName = name; 


       var uploads = (from u in _db.Patients 
          where u.PatientsId == id 
          select u.FilesUrl).FirstOrDefault(); 


       if (uploads != null) 
       { 

        string folder = Path.GetFullPath(uploads); 
        //HttpContext.Response.AddHeader("content-dispostion", "attachment; filename=" + fileName); 
        return File(new FileStream(folder +"/" + fileName, FileMode.Open), "content-dispostion", fileName); 
       } 

       throw new ArgumentException("Invalid file name of file not exist"); 
      } 

現在,在我們的數據庫中,我們有兩個字段,FilesUrl和PathUrl。 PathUrl在Review文件夾中保存已審查文件的URL。我認爲發生了什麼,如果我是正確的,他們都調用了只能鏈接到FileUrl的相同功能(下載)。我試着將評論部分中的actionLink更改爲詳細信息頁面中的「DownloadR」,然後複製並粘貼下載功能(將其重命名爲DownloadR並將其更改爲查找PathUrl),但仍無法正常工作。

有沒有人在這裏看到這是一個問題或任何建議如何解決它?預先感謝您的時間!

回答

1

它看起來像FilesUrl vs PathUrl問題。如果患者上傳文件並且Dr上傳的文件位於不同目錄中,則此控制器方法不適用於兩者。

如果要下載的文件來自Dr或患者,我將向Download方法添加第三個參數。

public ActionResult Download(int? id, string name, bool reviewDirectory) 
... 
var uploads = (from u in _db.Patients 
       where u.PatientsId == id 
       select (reviewDirectory ? u.PathUrl : u.FilesUrl)).FirstOrDefault(); 
+0

謝謝你的迴應。對於我爲reviewDirectory放置的內容,我有點困惑?我真的寫出了路徑嗎? C:/ inetpub/wwwroot等?對不起,如果這是一個超級新手問題,但我不是一絲不苟的程序員! – user1686221