我正在使用Kendo UI的编辑器,所以我遇到了很大问题。
我不知道编辑器返回的显示项目。
编辑转换类似:
<img src="someurl" />
为:
lt;p><img src="someurl"/></p>
我将转换后的字符串保存在数据库中,并尝试使用:
显示它@Html.Raw(item.description)
其中description是由kendo返回的字符串。
所以我不知道如何在我的视图中正确显示
任何帮助都将不胜感激。
答案 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);
答案 3 :(得分:1)
从.NET Wrappers生成的编辑器模板不再起作用。这是一个修复。
http://pknopf.com/blog/kendo-ui-editor-templates-for-asp-net