8

我正在使用 Kendo UI 的编辑器,所以我有很大的问题。

我不知道如何显示编辑器返回的项目。

编辑器转换如下:

<img src="someurl" />

到:

lt;p&gt;&lt;img src=&quot;someurl&quot;/&gt;&lt;/p&gt;

我将转换后的字符串保存在数据库中,并尝试使用以下方式显示它:

@Html.Raw(item.description)

其中描述是剑道返回的字符串。

所以我不知道如何在我的视图中正确显示它

任何帮助,将不胜感激。

4

4 回答 4

12

有一个名为 KendeUI 编辑器的选项,encoded用于配置编辑器是否应提交编码的 HTML 标记。

encoded默认值为true

如果您不想存储未编码的文本,请在创建编辑器时使用此代码段:

$("#Editor").kendoEditor({
     encoded: false
 });

但是因为你没有向服务器发送编码文本,所以 Asp.net 请求验证器会启动,它会中止你的请求。

如果您使用的是强类型视图,您可以做的是AllowHtmlAttribute在您的模型属性上使用:

看法:

@model MyModel

@using(Html.BeginForm("SomeAction", "SomeController"))
{
     @Html.TextAreaFor(m => m.Editor)
     <input type="submit" value="Save" />
}

<script type="text/javascript">
   $(function(){
      $("#Editor").kendoEditor({
        encoded: false
      });
   });
</script>

模型:

public class MyModel
{
    [AllowHtml]
    public string Editor { get; set; }
}

控制器动作

public ActionResult SomeAction(MyModel myModel)
{
    //Save to db, etc.
}

您还需要在 web.config 中设置以下内容,否则此属性在 .NET 4.0 中无效:

<httpRuntime requestValidationMode="2.0"/>
于 2012-06-21T08:06:33.700 回答
9

我为 MVC 找到了这个解决方案:在视图中

<div class="editor-field">
    @(Html.Kendo().EditorFor(model => model.HtmlField).Encode(false))
    @Html.ValidationMessageFor(model => model.HtmlField)
</div>

在模型中:

   [DataType(DataType.Html)]
   [AllowHtml]
   public string HtmlField{ get; set; }

这已经足够了

于 2013-05-04T18:37:59.173 回答
6

更简单的方法是在控制器中进行更改,而不是在视图和模型中进行更改。所以:

看法

$("#Editor").kendoEditor();

模型

public class MyModel
{
    public string Editor { get; set; }
}

控制器

Editor = Server.HtmlDecode(Editor);

html解码

于 2012-08-29T20:47:12.903 回答
1

从 .NET Wrappers 生成的编辑器模板不再起作用。这是一个修复。

http://pknopf.com/blog/kendo-ui-editor-templates-for-asp-net

于 2012-09-09T01:43:51.067 回答