我已经在谷歌上搜索了很长时间,但还没有找到我需要的东西。这是我们的场景。
我们有一个带有 Razor 的 MVC4 应用程序。在一个屏幕上,我们使用 Telerik Editor 控件来保存文本和图像。这些被格式化为 HTML 并存储在数据库中。图像存储为 byte[] 数据,并且 html src“路径”使用不同的文件名进行更新。
稍后用户来并想要查看数据。因为任何图像都存储在数据库中,我想我可以使用此处找到的示例将字节数组转换为图像并在 Razor 视图中显示,我将使用带有 Url.Action 的标签更新 HTML 中的标签,然后渲染所有这些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),它不会处理图像。如果我只是将该图像标签复制到视图中,效果很好。
我的问题是,如何在视图上正确呈现使用 Razor 语法代码动态创建的 HTML?
*************** 更多细节 ***********
更多细节有助于澄清我在做什么。我有两个模型 Response 和 ResponseImages。
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; }
}
公共类 ResponseImage : TrackableBase { [Key] 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 包并使用 Razor 语法更新所有图像标签以使用 @Url.Action。我的新 HTML 看起来像这样
<p>hjjk</p><p><img src="@Url.Action("getImg", "Responses", new { id = 4 }) " alt="Response Image" /> </p>
最后,在我的视图上,我想显示我的数据,但也要正确格式化 HTML。所以我打电话给@Html.Raw(Model.Text) 并且我的图片标签不起作用:(
*****更新结束****
在此先感谢,因为我非常坚持这一点。