使用旧的Telerik RTF/HTML编辑器
我的公司拥有旧版Telerik软件包的许可证。他们希望我在我们的一个屏幕上放置一个RTF文本框来代替正常的文本框。我有文本框的现存代码,我在我们的应用程序中使用了另一个页面,该页面表面上与RTF编辑器一起工作(这是我在特权级别无法访问的功能的一部分)。原代码如下:使用旧的Telerik RTF/HTML编辑器
@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。我可以输入文字。我可以加载文本。但是,当我尝试将对话框中的按钮所调用的过程保存为条目时,说明的文本已设置为NULL。我究竟做错了什么?在网络开发方面,我是一个新手,所以我有点抓住吸管。
我看过Telerik Editor doesn't work的答案,但我们有一个ScriptRegistrar的设置。我可以在Telerik网站上找到的教程全部用于Kendo编辑器。 This page似乎更适用,但据我所知,我正在做所有相同的事情。我试图找出是否有一个地方我需要插入一个调用HTMLEncode或HTMLDecode,但我还没有找到值变为NULL的地方,以便赶在它之前。不幸的是,公司代码和所有这些,我只能发布这么多,尽管我会尽我所能在必要时发布已过滤的细节。
为了将来遇到这个问题的人,我与这里的程序员之一进行了交流,他们可以访问已经发布的一些额外代码,但没有添加到我们的源代码中。我不得不添加类似于保存按钮相关的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的错误消息(因为我确切知道发布的内容,并且我知道它将被解码并编码为控件)。