使用旧的Telerik RTF/HTML编辑器

使用旧的Telerik RTF/HTML编辑器,telerik,rtf,web-controls,Telerik,Rtf,Web Controls,我的公司有一个旧Telerik软件包的许可证。他们希望我在我们的一个屏幕上放置一个RTF文本框来代替普通的文本框。我有文本框的现有代码,在我们的应用程序中使用了另一个页面,它表面上与RTF编辑器一起工作(这是功能的一部分,在我的特权级别上我无法访问)。原代码如下: @Html.TextAreaFor(m => m.LogEntry.Description, new { @id = "logDescription", @class = "dirtyField",

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

@Html.TextAreaFor(m => m.LogEntry.Description, 
    new { @id = "logDescription", @class = "dirtyField", 
          style = "width: 400px; height: 100px;" })
@(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()
    )
)
我正在对代码进行模式化的RTF代码如下所示:

@Html.TextAreaFor(m => m.LogEntry.Description, 
    new { @id = "logDescription", @class = "dirtyField", 
          style = "width: 400px; height: 100px;" })
@(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来显示编辑器控件。我可以在里面输入文字。我可以把文字载入其中。但是,当我试图保存对话框中按钮调用的过程的条目时,说明文本被设置为NULL。我做错了什么?在网络开发方面,我是个新手,所以我有点抓救命稻草


我已经看了答案,但我们已经设置了脚本注册器。我可以在Telerik网站上找到的教程都是为剑道编辑准备的。看起来更适用,但是,据我所知,我做的事情都是一样的。我试图找出是否需要在某个位置插入对HTMLEncode或HTMLDecode的调用,但我还没有找到将值更改为NULL的位置,以便在此之前捕获它。不幸的是,对于公司代码和所有这些,我只能发布这么多,尽管我会尽我所能发布必要的经过消毒的细节。

为了未来有此问题的人,我与这里的一位程序员进行了讨论,他们访问了一些已发布但未添加到源代码中的其他代码。我必须在与Save按钮关联的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属性添加一个
[allowtml]
修饰符,以避免出现错误消息,即发布了可能有危险的HTML(因为我确切地知道发布的内容,并且我知道它将被解码和编码以用于控件)