HTMLEditorExtender导致'Key not not null'错误

时间:2011-10-19 19:14:44

标签: c# asp.net-ajax ajaxcontroltoolkit html-editor

我在ASP.Net C#中的项目正在编译并且正常运行,除了当我尝试加载一个具有Ajax Control Toolkit HTMLEditorExtender的特定页面时。我得到一个Key不能是空页错误。我尝试删除htmleditorextender并放置一个asynchfileupload控件,以确保脚本管理器正常工作,页面出现正常,上传控件正常工作。所以它与htmleditorextender具体相关。这是我的代码:

<asp:TextBox ID="txtMailMsgContent" TextMode="MultiLine" runat="server"/>
<cc1:HtmlEditorExtender ID="HTMLEditorExtender" runat="server" 
TargetControlID="txtMailMsgContent">

            <Toolbar> 
                <cc1:Undo />
                <cc1:Redo />
                <cc1:Bold />
                <cc1:Italic />
                <cc1:Underline />
                <cc1:StrikeThrough />
                <cc1:Subscript />
                <cc1:Superscript />
                <cc1:JustifyLeft />
                <cc1:JustifyCenter />
                <cc1:JustifyRight />
                <cc1:JustifyFull />
                <cc1:InsertOrderedList />
                <cc1:InsertUnorderedList />
                <cc1:CreateLink />
                <cc1:UnLink />
                <cc1:RemoveFormat />
                <cc1:SelectAll />
                <cc1:UnSelect />
                <cc1:Delete />
                <cc1:Cut />
                <cc1:Copy />
                <cc1:Paste />
                <cc1:BackgroundColorSelector />
                <cc1:ForeColorSelector />
                <cc1:FontNameSelector />
                <cc1:FontSizeSelector />
                <cc1:Indent />
                <cc1:Outdent />
                <cc1:InsertHorizontalRule />
                <cc1:HorizontalSeparator />
            </Toolbar>
        </cc1:HtmlEditorExtender>

显示页面错误错误的行是这一行:

   <cc1:HtmlEditorExtender ID="HTMLEditorExtender" runat="server" TargetControlID="txtMailMsgContent">

这是堆栈跟踪:

[ArgumentNullException: Key cannot be null.
Parameter name: key]
   System.Collections.Hashtable.get_Item(Object key) +9355627
   AjaxControlToolkit.Sanitizer.Sanitizer.Initialize() +163
   AjaxControlToolkit.HtmlEditorExtender..ctor() +54
   ASP.mail_emailmessage_aspx.__BuildControlHTMLEditorExtender() in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:111
   ASP.mail_emailmessage_aspx.__BuildControlformMailMessage() in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:84
   ASP.mail_emailmessage_aspx.__BuildControlTree(mail_emailmessage_aspx __ctrl) in c:\Inetpub\wwwroot\Mail\EMailMessage.aspx:1
   ASP.mail_emailmessage_aspx.FrameworkInitialize() in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\26676eb7\92c7e946\App_Web_kemmoois.0.cs:0
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +54
   System.Web.UI.Page.ProcessRequest() +78
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +49
   ASP.mail_emailmessage_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\26676eb7\92c7e946\App_Web_kemmoois.0.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

任何帮助都会受到很大的影响。我试过谷歌搜索这个错误,找不到似乎有用的解决方案。

3 个答案:

答案 0 :(得分:1)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor" TagPrefix="cc1" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>    
        <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBox1">
        </asp:CalendarExtender>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <cc1:Editor ID="Editor1" runat="server" />
        <asp:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="TextBox2">
        </asp:HtmlEditorExtender>
        <asp:AnimationExtender ID="AnimationExtender1" runat="server" TargetControlID="TextBox3" >
        </asp:AnimationExtender>
    </div>
    </form>
</body>
</html>
  

尝试此代码,不要在web.config文件中进行任何更改   早些时候得到同样的例外,但是当我尝试这个时它得到了   解决

答案 1 :(得分:0)

我不知道这是不是你的问题,但是当我在system.web的web.config中没有以下部分时遇到了这个问题:

   <sanitizer defaultProvider="AntiXssSanitizerProvider">
       <providers>
           <add name="AntiXssSanitizerProvider" type="AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider"></add>
       </providers>
   </sanitizer>

您还需要在配置中使用此功能:

   <sectionGroup name="system.web">
       <section name="sanitizer" requirePermission="false"
                type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" />
   </sectionGroup>

答案 2 :(得分:0)

您必须将这些行添加到您的web.config

Configsectons:

<configSections>
   <sectionGroup name="system.web">
      <section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" />
   </sectionGroup>
</configSections>

System.web

<system.web>
   <sanitizer defaultProvider="AntiXssSanitizerProvider">
    <providers>
      <add name="AntiXssSanitizerProvider"   type="AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider" />
    </providers>
  </sanitizer>

你的麻烦应该像对待我一样消失。 如果有任何帮助,我可以通过查看对象浏览器找到解决方案。