如何在 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&gt;&lt;img src=&quot;someurl&quot;/&gt;&lt;/p&gt;

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

@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 中重新加载多对多导航属性

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

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)

C# asp.net MVC3 中的日历控件