使用较旧的Telerik RTF / HTML编辑器

时间:2014-11-24 19:29:26

标签: telerik rtf web-controls

我的公司拥有一个较旧的Telerik软件包的许可证。他们希望我在我们的一个屏幕上放置一个RTF文本框来代替普通的文本框。我有现有的文本框代码,我在我们的应用程序中使用了另一个页面,它表面上与RTF编辑器一起工作(它是我在特权级别无法访问的功能的一部分)。原始代码如下:

@Html.TextAreaFor(m => m.LogEntry.Description, 
    new { @id = "logDescription", @class = "dirtyField", 
          style = "width: 400px; height: 100px;" })

我的代码模式化的RTF代码如下:

@(Html.Telerik().EditorFor(m => m.MessageContent)
    .Name("msgEditor")
    .HtmlAttributes(new { style = "width: 600px; height:250px; padding-top:0px; padding-bottom:0px;" })
    .Tools(tools => tools
    .Clear()
    .Bold().Italic().Underline().Strikethrough()
    .JustifyLeft().JustifyCenter().JustifyRight().JustifyFull()
    .InsertUnorderedList().InsertOrderedList()
    .Outdent().Indent()
    .CreateLink().Unlink()
    .Subscript()
    .Superscript()
    .FontName()
    .FontSize()
    .FontColor().BackColor()
    )
)

我使用LogEntry.Description字符串而不是上面的MessageContent显示Editor控件。我可以输入文字。我可以加载文本。但是当我尝试保存对话框中按钮调用的过程的条目时,Description的文本已设置为NULL。我究竟做错了什么?在网络开发方面,我是一个新手,所以我有点掌握稻草。

我在Telerik Editor doesn't work查看了答案,但我们设置了一个ScriptRegistrar。我可以在Telerik网站上找到的教程全部用于Kendo编辑器。 This page似乎更适用,但据我所知,我正在做所有相同的事情。我试图找出是否有一个地方需要插入对HTMLEncode或HTMLDecode的调用,但是我还没有找到将值更改为NULL的位置,以便在此之前捕获它。不幸的是,公司代码和所有这些,我只能发布这么多,尽管我会尽力发布必要的消毒细节。

1 个答案:

答案 0 :(得分:0)

为了将来有这个问题的人,我将其与一位程序员合作,他们可以访问已发布的一些其他代码,但未添加到我们的源代码中。我必须在与“保存”按钮关联的Javascript代码的代码运行中添加类似于以下内容的代码:

var editor = $("#descriptionEditor").data("tEditor");
var message = editor.value();

$("#logentry-encoded-message-content").val(message);

在CSHTML文件中,必须添加以下元素:

@Html.HiddenFor(m => m.LogEntry.EncodedDescription, new { @id = "logentry-encoded-message-content" })

然后,在涉及处理表单的代码中,我将EncodedDescription的内容分配给Description。相当烦人的是,我还没有找到一种方法来在这里使用一个变量。我还必须在EncodedDescription属性中添加[AllowHtml]的修饰符,以避免发布有可能存在危险HTML的错误消息(因为我确切知道发布了什么,并且我知道它将被解码并且为控件编码。)