0

ASP.Net C# の私のプロジェクトは、Ajax コントロール ツールキット HTMLEditorExtender を含む特定のページを読み込もうとした場合を除いて、正常にコンパイルおよび実行されています。Key cannot be null page エラーが発生します。scriptmanager が機能していることを確認するためだけに、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

どんな助けでも大歓迎です。このエラーをグーグルで調べてみましたが、うまくいくと思われる解決策が見つかりません。

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

これが問題になるかどうかはわかりませんが、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 に答える
0

これらの行を web.config に追加する必要があります

構成セクション:

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

システム.web

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

あなたの悩みは、彼らが私にしたように、なくなるはずです。その助けがあれば、オブジェクトブラウザを見て解決策を見つけました。

于 2012-09-29T04:31:44.023 に答える