我的公司拥有一个较旧的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的位置,以便在此之前捕获它。不幸的是,公司代码和所有这些,我只能发布这么多,尽管我会尽力发布必要的消毒细节。
答案 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的错误消息(因为我确切知道发布了什么,并且我知道它将被解码并且为控件编码。)