2014-11-24 81 views
-1

我的公司拥有旧版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的地方,以便赶在它之前。不幸的是,公司代码和所有这些,我只能发布这么多,尽管我会尽我所能在必要时发布已过滤的细节。

回答

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的错误消息(因为我确切知道发布的内容,并且我知道它将被解码并编码为控件)。