2014-11-24 75 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的錯誤消息(因爲我確切知道發佈的內容,並且我知道它將被解碼並編碼爲控件)。