0

我在 ASP.Net C# 中的项目正在编译和运行良好,除非我尝试加载一个特定的页面,该页面上有一个 Ajax Control Toolkit HTMLEditorExtender。我得到一个 Key cannot be null page 错误。我尝试删除 htmleditorextender 并放置一个 asynchfileupload 控件,以确保 scriptmanager 正常工作,并且页面正常运行并且上传控件正常工作。所以它是专门针对 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

任何帮助将不胜感激。我试过用谷歌搜索这个错误,但找不到似乎有效的解决方案。

4

3 回答 3

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 文件中做任何更改我之前遇到了同样的异常,但是当我尝试这个时它得到了解决

于 2012-01-12T06:47:19.343 回答
0

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

配置项:

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

系统网站

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

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

于 2012-09-29T04:31:44.023 回答
0

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

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

您还需要在 configsections 中有这个:

   <sectionGroup name="system.web">
       <section name="sanitizer" requirePermission="false"
                type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit" />
   </sectionGroup>
于 2011-10-26T13:58:31.460 回答