【问题标题】:How use Kendo UI Editor in asp.net mvc3 with razor?如何在 asp.net mvc3 中使用 Kendo UI Editor 和剃须刀?
【发布时间】: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 编辑器的位置吗?还有你如何发布数据的形式?

标签: asp.net-mvc-3 razor editor 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      相关资源
      最近更新 更多