使用 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=""+db.getmyimageurl().tostring()+";" > ";
我的看法如下:
<div> my image: @Model.html.body </div>
但它不显示图像,而是显示这样的字符串
<img src="imageUrlNotworking....//...;" > "
我做错了什么吗?我该如何解决?谢谢!
【问题讨论】:
【参考方案1】:您的第二个;&quot;
开头不需要;
,而不是&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
使用 LiveData 和 ViewModel 删除项目会导致重新发射
JetpackViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 )