如何在使用剃须刀的asp.net mvc3中使用Kendo UI Editor?

时间:2012-06-21 06:30:00

标签: asp.net-mvc-3 razor editor kendo-ui

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

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

编辑转换类似:

<img src="someurl" />

为:

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

我将转换后的字符串保存在数据库中,并尝试使用:

显示它
@Html.Raw(item.description)

其中description是由kendo返回的字符串。

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

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分: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; }

这就够了

答案 2 :(得分:5)

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

查看

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

<强>模型

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

<强>控制器

Editor = Server.HtmlDecode(Editor);

HtmlDecode

答案 3 :(得分:1)

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

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