如何在@ Html.TextAreaFor()中使用@ Html.Raw()

时间:2018-01-22 08:43:21

标签: asp.net-mvc summernote

我使用summernote添加图片,视频,文字。此外,我将图像或视频保存为类型字符串到数据库的Html代码。当我从数据库中检索视频或图像以在夏令时显示时,它需要将近5分钟,我不知道为什么。但是,当我从数据库中检索文本以在summernote上显示时,没有问题。

这是模型

public class Article
{
   [AllowHtml]
   [Column(TypeName = "varchar(MAX)")]
   public string Content { get; set; }
}

以下是夏令营编辑器的视图

@Html.TextAreaFor(x => Model.Content, new { @class = "", placeholder = @Blog.Helper.Resources.Content, @id = "summernote_1" })

此外,如果我在视图中使用以下代码

<div id="summernote_1">@Html.Raw(Model.Content)</div>

显示视频或图像没问题,但我无法编辑summernote。当我编辑summernote时,Model.Content变为null。

如果我在View

中使用以下代码
@Html.TextAreaFor(x => Model.Content, new { @class = "", placeholder = @Blog.Helper.Resources.Content, @id = "summernote_1" })

编辑summernote没问题,但显示视频或图像大约需要5分钟。

由于这些原因,我试图在View中使用下面的代码,但下面的代码出现错误。

@Html.TextAreaFor(x => Html.Raw(Model.Content), new { @class = "", placeholder = @Blog.Helper.Resources.Content, @id = "summernote_1" })

我可以在html.TextAreaFor中使用html.raw吗?或者我可以为此问题做些什么来显示视频或图像并编辑summernote。 对不起我的英语不好,我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

Html.Raw方法返回System.Web.IHtmlString,我认为您需要的只是传递包含HTML标记的string属性(AFAIK Html.Raw帮助程序不能在其他HTML帮助程序中使用例如DisplayForTextBoxFor)。

可以在HttpUtility.HtmlDecode之前使用Content TextAreaFor属性,如此示例所示(特别是如果HTML标记在不知不觉中编码):

@model Article

@{
    Model.Content = HttpUtility.HtmlDecode(Model.Content);
}

@Html.TextAreaFor(x => x.Content, new { @class = "", placeholder = @Blog.Helper.Resources.Content, @id = "summernote_1" })

通过这种方式,您可以从viewmodel的字符串属性中正确呈现HTML标记,而不会丢失模型绑定。

答案 1 :(得分:0)

  

.textarea {
          填充:2px;
          宽度:250像素;
          高度:200像素;
          边框:实心1px#e0e0eb;
          溢出:滚动;
          溢出-y:滚动;
          溢出-x:隐藏;
      }
           

在包含类“ textarea”的div内使用@ Html.Raw()编写html内容。

<div class="textarea"> @Html.Raw(Model.NOTE) </div>