Ajax HtmlEditorExtender проблемы с IE
Ресурсы: WebForm, VS 2010,.Net 4.0, SQL Server 2008 R2, IE 11 и Chrome 36.0.1985.125.
Веб-форма предназначена для создания уведомлений по электронной почте. Поэтому у меня есть textbox
с ajax HtmlEditorExtender
прикреплен к нему. После того, как пользователь добавляет / редактирует HTML-текст, который должен быть телом электронной почты, он сохраняется в varbinary(max)
столбец в БД.
отлаживать
В режиме отладки я заметил, что когда пользователь нажимает кнопку "Сохранить" на форме, я получаю ошибку JS (хотя у меня вообще нет js-скрипта в форме!):
Эта ошибка происходит от HTMLEditorExtender
как при удалении этого элемента управления, я больше не получаю никаких ошибок на странице при отправке формы. При нажатии "Продолжить" в режиме отладки я не получаю никакого другого неожиданного поведения, и текст сохраняется в БД в правильном формате HTML.
производство
Когда сайт публикуется, я получаю странное поведение (пользователь вводит следующий текст):
После того, как я нажму Сохранить в первый раз:
После того, как я несколько раз нажал кнопку "Сохранить", ничего не меняя в тексте:
Это происходит ТОЛЬКО в IE (протестировано в IE 11, я не знаю, то же самое в предыдущих версиях IE). В Google Chrome он работает нормально, но в моей компании единственным разрешенным браузером является IE, поэтому Chrome мне здесь не поможет.
Вот некоторые фрагменты кода:
Aspx:
управления:
<td colspan="10" style="padding: 5px; margin: 5px; width:100%; overflow:auto;" > <asp:TextBox ID="tbBody" runat="server" Text="" TextMode="MultiLine" Rows="30" Columns="118" ></asp:TextBox> <br /> <ajaxToolkit:HtmlEditorExtender ID="htmlEditorExtender1" runat="server" TargetControlID="tbBody" DisplaySourceTab="true" > <Toolbar> <ajaxToolkit:FontNameSelector /> <ajaxToolkit:HorizontalSeparator /> <ajaxToolkit:FontSizeSelector /> <ajaxToolkit:Bold /> <ajaxToolkit:Italic /> <ajaxToolkit:Underline /> <ajaxToolkit:StrikeThrough /> <ajaxToolkit:JustifyLeft /> <ajaxToolkit:JustifyCenter /> <ajaxToolkit:JustifyRight /> <ajaxToolkit:JustifyFull /> <ajaxToolkit:InsertOrderedList /> <ajaxToolkit:InsertUnorderedList /> <ajaxToolkit:RemoveFormat /> <ajaxToolkit:BackgroundColorSelector /> <ajaxToolkit:ForeColorSelector /> <ajaxToolkit:Indent /> <ajaxToolkit:Outdent /> <ajaxToolkit:InsertHorizontalRule /> <ajaxToolkit:HorizontalSeparator /> </Toolbar> </ajaxToolkit:HtmlEditorExtender>
страница:
Язык страницы ="C#" AutoEventWireup="false" CodeFile="Notification.aspx.cs" Inherits="RulesManagement_Notification" Title="Уведомление" MasterPageFile="~/MasterPage.master" ValidateRequest="false"
Зарегистрировать сборку = "AjaxControlToolkit" Namespace = "AjaxControlToolkit" TagPrefix = "ajaxToolkit"
CS:
метод save (при передаче текста в качестве параметра в БД):
SqlParameter prmBody = new SqlParameter ("@ BODY", SqlDbType.NVarChar, -1); prmBody.Value = tbBody.Text; sqlSaveNotif.Parameters.Add (prmBody);
Из того, что я могу сказать, фактический текст текстового поля меняется каким-то странным поведением этого HTMLEE, но только в IE. Я открыт для использования любого другого элемента управления, который даст мне ту же функциональность, что и этот HTMLEE. Я пробовал элемент управления FreeTextBox, но не могу заставить его работать в IE, он работает только в Chrome:). Есть ли какой-нибудь готовый элемент управления (html или asp.net), который бы мне помог в этом случае? Если нет, как я могу заставить элемент управления HTMLee Ajax работать правильно в IE?