3

私は長い間グーグルをしてきましたが、必要なものがまったく見つかりませんでした。これが私たちのシナリオです。

Razor を使用した MVC4 アプリがあります。ある画面では、Telerik Editor コントロールを使用してテキストと画像を保存しています。これらは HTML としてフォーマットされ、データベースに保存されます。画像は byte[] データとして保存され、html src の「パス」は個別のファイル名で更新されます。

後でユーザーが来て、データを表示したいと考えています。画像はすべてデータベースに保存されるため、バイト配列を画像に変換して Razor ビューで表示するにある例を使用して、HTML のタグを Url.Action のタグで更新し、そのすべてをレンダリングできると考えました。 HTML を画面に表示します。

イメージタグが置き換えられた後に動的に生成された html コードのサンプルは次のとおりです。

<p>testing the image blah</p><p><img src="@Url.Action("getImg", "Responses", new { id = 1 }) " alt="Response Image" /> </p>

しかし、HTML.Raw(Text) を使用すると、画像が処理されません。そのイメージタグをビューにコピーするだけでうまくいきます。

私の質問は、View で Razor 構文コードを使用して動的に作成された HTML を適切にレンダリングするにはどうすればよいですか?

************** 詳細はこちら **********

私がやっていることを明確にするのに役立ついくつかの詳細。Response と ResponseImages の 2 つのモデルがあります。

public class Response : TrackableBase 
{
    [Key]
    public int ResponseId { get; set; }
    public string Subject{ get; set; }

    [MaxLength]
    public string Text { get; set; }

    public virtual ICollection<ResponseImage> ResponseImages { get; set; }
}

public class ResponseImage : TrackableBase { [キー] public int ResponseImageId { get; 設定; }

    public int ResponseId { get; set; }
    [ForeignKey("ResponseId")]
    public virtual Response Response { get; set; }

    public string FilePath { get; set; }
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public byte[] Image {get; set;}


}

Response.Text は、Telerik エディターからの HTML を保存します。HTMLAgilitypack を使用して HTML 内のすべての画像をループし、これらから ResponseImage レコードを作成します。ResponseImage.FilePath は、Response.Text に格納されている HTML コードへのリンクとして使用するものです (すべての画像は個別の名前/パス)。

Details.cshtml 画面で、Response.Text の詳細を表示したいと考えています。データベースから、私の Response.Text は次のようになります。

<p>hjjk</p><p>
<img alt="" height="144" src="/Content/Editor_Images/UserFiles/JKULBIDA/Images/Koala_635019802303066655.jpg" width="164"></p>

しかし、ファイル システムではなくデータベースに画像を保存しているため、再び HTMLAgility パックを使用し、@Url.Action を使用するための Razor 構文ですべての画像タグを更新します。私の新しいHTMLは次のようになります

<p>hjjk</p><p><img src="@Url.Action("getImg", "Responses", new { id = 4 }) " alt="Response Image" /> </p>

最後に、自分のビューでデータを表示したいだけでなく、HTML も適切にフォーマットしたいと考えています。だから私は @Html.Raw(Model.Text) を呼び出しますが、イメージタグは機能しません:(

***** 更新終了 ****

私はこれに非常にこだわっているので、前もって感謝します。

4

1 に答える 1