0

我正在使用 ASP.NET MVC 并按照 ASP.NET 网站“getting-started-with-ef-using-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; }
    }

现在在我的设备索引页面上,我正在显示相关的校准记录(主-详细信息)。看看下面: 在此处输入图像描述 所以在[校准证书]列而不是文档路径中,我想显示一个文档链接,它将在浏览器或相关程序中打开文档。

这是该子校准记录的标记

  @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>

请帮助我如何将其设为文档链接,并且 LinkTitle 应显示文档名称。

4

5 回答 5

0

您可以在 td 内部使用:

<a href=@(Model.CalibrationCertLink)>Certificate</a>

Yust 将 CalibrationCertLink 属性添加到 Calibration 类以返回文件的相对链接。

于 2013-02-22T10:39:10.080 回答
0

在查询字符串中添加带有参数的操作链接。否则我们可能会像这里建议的那样 使用报告服务 Web 服务:使用 WCF 来自 ASP.NET MVC 的报告服务 Web 服务

于 2013-02-22T10:41:23.497 回答
0

您应该在 Shared Views 文件夹中创建 DisplayTemplates,然后在其中为该示例 CalibrationCert.cshtml 创建模板,并在那里创建显示代码:

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

和@线

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

您应该更改为:

[UIHint("CalibrationCert")]
public virtual ICollection<Calibration> Calibrations { get; set; }
于 2013-02-22T10:42:11.010 回答
0

首先,您应该使用如下所示的 Action 方法

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

代替附件图像,您也可以放置一些文字,说“查看证书”。

支持文件查看的动作方法

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);
        }


    }
于 2013-02-22T10:49:50.153 回答
0

您可以为此添加一个锚标记:

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

当你说它target=_blank在一个新窗口中打开。

于 2013-02-22T11:18:57.720 回答