1

资源: WebForm、VS 2010、.Net 4.0、SQL Server 2008 R2、IE 11 和 Chrome 36.0.1985.125 m。

Web 表单旨在创建电子邮件通知。因此,我有textbox一个ajax HtmlEditorExtender附在它上面的。在用户添加/编辑应该是电子邮件正文的 html 文本后,它会保存在varbinary(max)db.xml 的列中。

调试

在调试模式下,我注意到当用户单击表单上的保存按钮时,我收到一个 JS 错误(虽然我的表单中根本没有任何 js 脚本!):

调试中的 JS 错误

此错误来自HTMLEditorExtender当我删除此控件时,提交表单时页面上不再出现任何错误。按继续,在调试中,我没有得到任何其他意外行为,并且文本以正确的 html 格式保存在数据库中。

生产

当网站发布时,我得到了这种奇怪的行为(用户输入以下文本): ProdEnteredText 提交前

第一次点击保存后: 第一次点击保存后

在我点击保存几次而不更改任何文本后: 在此处输入图像描述

这只发生在 IE 中(在 IE 11 中测试过,我不知道它在以前版本的 IE 中是否相同)。在 Google Chrome 中它工作正常,但在我的公司中,唯一允许的浏览器是 IE,所以 Chrome 在这里对我没有任何好处。

以下是一些代码片段:

ASP:

  • 控制:

    <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="Notification" MasterPageFile="~/MasterPage.master" ValidateRequest="false"

    注册 Assembly="AjaxControlToolkit" 命名空间="AjaxControlToolkit" TagPrefix="ajaxToolkit"

CS:

  • 保存方法(将文本作为参数传递到数据库时):

    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)可以帮助我?如果没有,我怎样才能使 Ajax 的 HTMLee 控件在 IE 中正常工作?

4

0 回答 0