使用 viewmodel 在视图中显示图像

Posted

技术标签:

【中文标题】使用 viewmodel 在视图中显示图像【英文标题】:show images in view, using viewmodel 【发布时间】:2016-06-21 02:33:12 【问题描述】:

美好的一天,你好吗? 我目前正在使用 mvc、c#、sql,我正在这样做: 我有一个这样的视图模型:

 public class htmlviewmodel

    public string Color  get; set; 
    public string body  get; set; 
    public string style  get; set; 

我正在尝试获取图像 url 并在我的视图中显示图像,该 url 来自我的数据库

  entity db = new myentity();
  var html = new htmlviewmodel();
  html.body="<img src=&quot;"+db.getmyimageurl().tostring()+";&quot; > ";

我的看法如下:

<div> my image: @Model.html.body  </div>

但它不显示图像,而是显示这样的字符串

<img src=&quot;imageUrlNotworking....//...;&quot; > "

我做错了什么吗?我该如何解决?谢谢!

【问题讨论】:

【参考方案1】:

您的第二个;&amp;quot; 开头不需要;,而不是&amp;quot;,您可以使用\"'(单引号)。 之后,您必须先解码 html,然后使用 Html.Raw 方法呈现您的 html:

<div> my image: @Html.Raw(System.Web.HttpUtility.HtmlDecode(Model.html.body))  </div>

或者像这样将你的字符串转换为 HtmlString:

@ var htmlBody= new HtmlString(System.Web.HttpUtility.HtmlDecode(Model.html.body));
 <div> my image: @htmlBody  </div>

【讨论】:

谢谢!有效!还有一个问题,如果我想从我的数据库中传递 html 怎么办?例如,一张桌子?我应该如何进行? @EbaneoVk ,如果您想将 HTML 保存在数据库中,您应该先使用 HtmlEncode 方法对 HTML 进行编码,然后使用 HtmlDecode 和 Html.Raw 方法将其显示在视图中【参考方案2】:

如果您将图像 url 存储在数据库中,它的存储就像“c:\picture.png”。但你实际上需要“c:/picture.png”。所以将'\'转换成这个'/'。我以前就是这样面对的。

【讨论】:

您的代码似乎来自 db...调试您的代码

以上是关于使用 viewmodel 在视图中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

ViewModel在MVC3中的应用:一个view显示多个model

在View中显示文件路径中的图像

使用 LiveData 和 ViewModel 删除项目会导致重新发射

JetpackViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 )

如何使用 Knockout.js 将多个 View 绑定到单个 ViewModel

使用 TabControl (MVVM) 显示不同的 ViewModel