Ресурсы: WebForm, VS 2010, .Net 4.0, SQL Server 2008 R2, IE 11 и Chrome 36.0.1985.125 m.
Веб-форма предназначена для создания уведомлений по электронной почте. Поэтому у меня есть textbox
с прикрепленным к нему ajax HtmlEditorExtender
. После того, как пользователь добавляет/редактирует текст html, который должен быть телом электронной почты, он сохраняется в столбце varbinary(max)
в базе данных.
Отладка
В режиме отладки я заметил, что когда пользователь нажимает кнопку сохранения на форме, я получаю ошибку JS (хотя у меня вообще нет никакого js-скрипта в форме!):
Эта ошибка возникает из-за HTMLEditorExtender
, поскольку, когда я удаляю этот элемент управления, я больше не получаю никаких ошибок на странице при отправке формы. Нажав «Продолжить», в отладке я не получаю никакого другого неожиданного поведения, и текст сохраняется в базе данных в правильном формате html.
Производство
Когда сайт публикуется, я получаю странное поведение (пользователь вводит следующий текст):
После того, как я нажму "Сохранить" в первый раз:
После того, как я несколько раз нажму «Сохранить», ничего не меняя в тексте:
Это происходит ТОЛЬКО в IE (проверено в IE 11, я не знаю, было ли то же самое в предыдущих версиях IE). В Google Chrome все работает нормально, но в моей компании единственным разрешенным браузером является IE, поэтому Chrome мне здесь не поможет.
Вот несколько фрагментов кода:
Аспрокси:
контроль:
<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>
page:
Язык страницы="C#" AutoEventWireup="false" CodeFile="Notification.aspx.cs" Inherits="RulesManagement_Notification" Title="Notification" MasterPageFile="~/MasterPage.master" ValidateRequest="false"
Регистрация Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit"
CS:
метод сохранения (при передаче текста в качестве параметра в БД):
SqlParameter prmBody = новый SqlParameter("@BODY", SqlDbType.NVarChar, -1); prmBody.Value = tbBody.Text; sqlSaveNotif.Parameters.Add(prmBody);
Из того, что я могу сказать, фактический текст текстового поля изменяется каким-то странным поведением этого HTMLEE, но только в IE. Я открыт для использования любого другого элемента управления, который даст мне ту же функциональность, что и этот HTMLEE. Я попробовал элемент управления FreeTextBox, но не могу заставить его работать в IE, он работает только в Chrome. :). Есть ли готовый элемент управления (html или asp.net), который помог бы мне в этом случае? Если нет, как я могу заставить элемент управления Ajax HTMLee работать правильно в IE?
DisplaySourceTab="true"
наDisplaySourceTab="false"
, что означает, что я больше не смогу переключаться для просмотра фактического HTML-кода в элементе управления. После установки значения false я больше не сталкиваюсь с этой ошибкой в IE 11. Я еще немного протестирую ее, но, насколько я проверял, она не добавляла странную строку jquery в текст текстового поля. - person Sergiu   schedule 23.07.2014