2013-02-22 4 views
0

ASP.NET MVC를 사용하고 ASP.NET 웹 사이트 "Getting-with-ef-using-mvc"자습서의 지침을 따르고 있습니다. 나는 장비 클래스ASP.NET MVC에서 필드를 링크로 표시하는 방법

public class Equipment 
    { 
     [Key] public int EquipID { get; set; } 
     public string EquipName { get; set; } 
     public string EquipDescription { get; set; } 
     public string EquipSerialNumber { get; set; } 
     public string EquipImage { get; set; } 
     public string EquipManufacturor { get; set; } 
     public string EquipLocation { get; set; } 
     public string EquipCalibrationFreq { get; set; } 
     public virtual ICollection<Calibration> Calibrations { get; set; } 
    } 

이 각 장비 클래스는 하나 개 이상의 교정 기록을 가지고있다. 아래는 내 교정 클래스입니다.

public class Calibration 
    { 
     [Key] public int RecID { get; set; } 
     public int EquipID { get; set; } 
     public DateTime CalibrationDate { get; set; } 
     public decimal? CalibrationCost { get; set; } 
     public String CalibratedBy { get; set; } 
     public String CalibrationCert { get; set; } 
     public DateTime NextCalibrationDue { get; set; } 
     public String ResponsibleSection { get; set; } 
     public virtual Equipment Equipment { get; set; } 
    } 

장비 색인 페이지에서 관련 교정 기록 (마스터 세부 정보)을 보여줍니다. 아래를보십시오 : enter image description here [교정 인증서] 란에서 문서로 연결되는 경로 대신 브라우저 또는 관련 프로그램에서 문서를 열어야하는 문서 링크를 표시하고 싶습니다.

내가 문서에이 링크를 만들 수 있고, LinkTitle가 DocumentName를 표시하는 방법을 이 제발 도와주세요 그 아이의 교정 기록
@foreach (var item in Model.Calibrations) 
    { 
     <tr> 
      <td>@Html.DisplayFor(modelItem => item.CalibrationDate)</td> 
      <td>@Html.DisplayFor(modelItem => item.CalibratedBy) </td> 
      <td>@Html.DisplayFor(modelItem => item.CalibrationCost)</td> 
      <td>@Html.DisplayFor(modelItem => item.NextCalibrationDue)</td> 
      <td>@Html.DisplayFor(modelItem => item.CalibrationCert) </td> 

}에 대한 마크 업입니다.

답변

0

먼저 당신은 당신이뿐만 아니라 '인증서보기'를 말하는 일부 텍스트를 넣을 수 있습니다 조치 방법을 사용한다.

의 조치 방법은 그냥이 일을위한 앵커 태그를 추가 할 수있는 파일보기

public ActionResult ViewCertificate(string fileName) 
    { 
     try 
     { 
      var fileStream = System.IO.File.OpenRead(Server.MapPath("~/Certificates/" + fileName)); 
      return File(fileStream , "application/pdf", fileName); 
     } 
     catch 
     { 
      throw new HttpException(404, "Certificate does not found " + fileName); 
     } 


    } 
+0

파일이 있어도이 오류가 표시됩니다. 인증서가 c : \ users \ shani \ documents \ visual studio 2012 \ Projects \ QA \ QA \ Content \ CaliCert \ 2222013111358-EnrollmentCert에 없습니다.pdf –

+0

약간의 수정을했습니다. 어떻게 든 작동하며, 자동으로 프로그램을 여는 대신 파일이 다운로드됩니다. 감사합니다 –

+0

수정 사항이있는 경우 대답을 편집하십시오. 도움이 필요한 사람에게 도움이 될 수 있습니다. –

0

당신은 TD 내에서 사용할 수 있습니다

<a [email protected](Model.CalibrationCertLink)>Certificate</a> 

YUST이 파일에 상대 링크를 반환 교정 클래스에 CalibrationCertLink 속성을 추가 할 수 있습니다.

0
공유 뷰 폴더를하고 거기에 당신이 그 예 CalibrationCert.cshtml에 대한 템플릿을 생성해야하고 거기에 당신이 당신의 디스플레이 코드를 작성해야합니다 당신이 DisplayTemplates를 만들어야합니다

:

@model List<CalibrationCert> 
     @foreach (var a in Model) 
      { 
//Create hear the display HTML 
      } 

및 @ 선

public virtual ICollection<Calibration> Calibrations { get; set; } 

당신은 변경 shuld에 :

첨부 이미지 대신에

@if (item.Certificate != null) 
    { 
     <a href = @Url.Action("ViewCertificate", new { fileName = item.Certificate }) > <img src = "@Url.Content("~/Images/attachment.png")" alt = "attachment" /> </a> 
    } 

아래에 주어진

[UIHint("CalibrationCert")] 
public virtual ICollection<Calibration> Calibrations { get; set; } 
0

을 지원하기 : 당신이 target=_blank를 말할 때이 새 창에서 열립니다

<a href="@(Model.CalibrationCertLink)" target="_blank">View Certificate</a> 

.

+0

시도했지만 파일이 열리지 않습니다 :( –

+0

html은 무엇입니까? –

관련 문제