如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?
Posted
技术标签:
【中文标题】如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?【英文标题】:How use Kendo UI Editor in asp.net mvc3 with razor? 【发布时间】:2012-06-23 08:46:43 【问题描述】:我正在使用 Kendo UI 中的编辑器,所以我遇到了很大的问题。
我不知道编辑器返回的项目如何显示。
编辑器转换如下:
<img src="someurl" />
到:
lt;p><img src="someurl"/></p>
我将转换后的字符串保存在数据库中,并尝试显示:
@html.Raw(item.description)
其中描述是剑道返回的字符串。
所以我不知道如何在我的视图中正确显示它
任何帮助将不胜感激。
【问题讨论】:
您能否发布您的视图相关部分的外观? 您还可以发布您在视图中定义 Kendo UI 编辑器的位置吗?还有你如何发布数据的形式? 【参考方案1】: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"/>
【讨论】:
谢谢,但它只解决了我的一半问题,因为它还有新问题。如果我将此选项设置为false
,我会遇到引号问题和错误:A potentially dangerous Request.Form value was detected from the client
。所以也许更好的方法是设置encoded: true
并使用一些转换在控制器中对其进行编码?有什么想法吗?
将[AllowHtml]
属性用于绑定到KendoUI 编辑器的属性。
我不确定应该在哪里添加[AllowHtml]
属性。
@MateuszRogulski 我已经用一些额外的信息更新了我的答案。
非常感谢 :) 你的回答很有帮助。【参考方案2】:
我为 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;
够了
【讨论】:
他刚刚为我工作!!!!!!!!!!!!在网格弹出窗口的模板中使用 Html.Kendo().EditorFor 时,Update Crud 没有击中控制器。我添加了上面的两个属性并且它起作用了。希望我能给你 10 票!【参考方案3】:更简单的方法是在控制器中进行更改,而不是在视图和模型中进行更改。所以:
查看
$("#Editor").kendoEditor();
型号
public class MyModel
public string Editor get; set;
控制器
Editor = Server.HtmlDecode(Editor);
HtmlDecode
【讨论】:
【参考方案4】:从 .NET Wrappers 生成的编辑器模板不再起作用。这是一个修复。
http://pknopf.com/blog/kendo-ui-editor-templates-for-asp-net
【讨论】:
以上是关于如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用代码优先实体框架在 ASP.Net MVC3 中重新加载多对多导航属性
如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?
如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入