0

私は ASP.NET MVC を使用しており、ASP.NET Web サイト「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; }
    }

各機器クラスには、1 つ以上の校正レコードがあります。以下は私のキャリブレーションクラスです。

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

機器のインデックス ページで、関連する校正記録 (マスター詳細) を表示しています。以下を見てください: ここに画像の説明を入力 [Calibration Certificate] 列ではなく、ドキュメントへのパスに、ドキュメントへのリンクを表示したいと思います。これにより、ブラウザまたは関連プログラムでドキュメントが開きます。

これは、その子キャリブレーション レコードのマークアップです

  @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 には documentName が表示されます。

4

5 に答える 5

0

td内で使用できます:

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

Yustは、CalibrationCertLinkプロパティをCalibrationクラスに追加して、ファイルへの相対リンクを返します。

于 2013-02-22T10:39:10.080 に答える
0

これを行うためのアンカータグを追加するだけです:

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

と言うtarget=_blankと新しいウィンドウで開きます。

于 2013-02-22T11:18:57.720 に答える
0

クエリ文字列にパラメーターを含むアクション リンクを追加します。または、ここで提案されているようなレポート サービス Web サービスを使用することもできます: Reporting Services Web Service from ASP.NET MVC Using WCF

于 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 に答える