Проблемы Ajax HtmlEditorExtender с IE

Ресурсы: 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-скрипта в форме!):

Ошибка JS при отладке

Эта ошибка возникает из-за HTMLEditorExtender, поскольку, когда я удаляю этот элемент управления, я больше не получаю никаких ошибок на странице при отправке формы. Нажав «Продолжить», в отладке я не получаю никакого другого неожиданного поведения, и текст сохраняется в базе данных в правильном формате html.

Производство

Когда сайт публикуется, я получаю странное поведение (пользователь вводит следующий текст): ProdEnteredText Before Submit

После того, как я нажму "Сохранить" в первый раз: После того, как я нажму

После того, как я несколько раз нажму «Сохранить», ничего не меняя в тексте: введите здесь описание изображения

Это происходит ТОЛЬКО в 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?


person Sergiu    schedule 23.07.2014    source источник
comment
У меня не было проблем с элементом управления FreeTextBox в корпоративной среде только для IE. У меня тоже нет проблем с экстендером. Я полагаю, у вас есть ссылка на библиотеку jquery? Что произойдет, если вы удалите ссылку на библиотеку jquery и попытаетесь запустить ее? Кто-нибудь знает хорошее коммерческое текстовое поле html - я вполне рад заплатить, но я хочу, чтобы оно поддерживалось. Я думаю, что FreeTextBox больше не поддерживается. Раньше я использовал элемент управления Dart, но он больше не поддерживается.   -  person Martin Smellworse    schedule 23.07.2014
comment
Эй, Мартин, да, у меня есть ссылка на главной странице (которая находится в VB, а не на моей странице, которая находится в C #) на библиотеку jquery - jquery-1.6.4.min.js. Я удалю ссылку и посмотрю, что произойдет.   -  person Sergiu    schedule 23.07.2014
comment
Нет, я не могу удалить его, так как он используется в форме мастер-страницы, а на моей странице я также использую другие компоненты ajax, такие как ValidatorCalloutExtender... какие-либо другие мысли, пожалуйста?   -  person Sergiu    schedule 23.07.2014
comment
Кажется я нашел в чем проблема! :) Я изменил определение элемента управления с DisplaySourceTab="true" на DisplaySourceTab="false" , что означает, что я больше не смогу переключаться для просмотра фактического HTML-кода в элементе управления. После установки значения false я больше не сталкиваюсь с этой ошибкой в ​​IE 11. Я еще немного протестирую ее, но, насколько я проверял, она не добавляла странную строку jquery в текст текстового поля.   -  person Sergiu    schedule 23.07.2014
comment
Нет, сказал слишком рано.. После изменения displaysourcetab на false он делает то же самое... Черт возьми! Я надеялся избавиться от этой глупой ошибки!   -  person Sergiu    schedule 23.07.2014
comment
Теперь точно я нашел решение! Это произошло потому, что главная страница была настроена на совместимость с IE8, а этот элемент управления ajax должен был быть создан на основе более новой версии IE. Таким образом, изменение совместимости главной страницы с IE10 устранило все мои проблемы как в отладке, так и в рабочей среде! Старая версия, в которой я получил все эти ошибки: ‹%--‹meta http-equiv=X-UA-Compatible content=IE=EmulateIE8 /›--%› Новый уровень компа, который исправил все как в отладке, так и в производстве: ‹ мета http-equiv=X-UA-совместимый контент=IE=10,chrome=1 /›   -  person Sergiu    schedule 23.07.2014
comment
Возможно, мне следует поблагодарить @ccStars за то, что он дал мне идею в этом посте: error-in-ie11" title="postback с расширителем HTML-редактора на странице вызывает ошибку javascript в ie11"> stackoverflow.com/questions/24203119/   -  person Sergiu    schedule 23.07.2014