对象未设置为SlideshowExtender的参考

时间:2013-10-14 16:50:15

标签: c# asp.net asp.net-ajax ajaxcontroltoolkit nullreferenceexception

我在这个问题上的斗智斗勇。我想使用AjaxControltoolkit中的SlideShowExtender获取“类似CMS”的网站,但我收到错误消息... “ajaxcontroltoolkit.slideshowextender对象引用未设置为对象的实例.ajaxcontroltoolkit.slideshowextender.oninit(eventargs e)。”我正在使用masterpages并在默认页面上包含了scriptmanagerproxy,在PDAP.master主页中包含了takeitscriptmanager。这是代码。这是粗略的草案,只在概念阶段。

PDAP.master

  

<%@ Master Language =“C#”AutoEventWireup =“true”CodeFile =“PDAP.master.cs”Inherits =“PDAP”%>   Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

     

         

 <title></title>
     

     

   <form id="form1" runat="server">
   <ajax:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
   <Services>
       <asp:ServiceReference Path="~/Slideshow.asmx" />
   </Services>
   </ajax:ToolkitScriptManager>
   <asp:ContentPlaceHolder id="HeadContent" runat="server">

   PDAP  
   </asp:ContentPlaceHolder>

   <div>
   <div id="centercontent" >
       <asp:ContentPlaceHolder id="CenterContent" runat="server" >
       CenterContent
       </asp:ContentPlaceHolder>
   </div>
   <div id="rightcontent">
       <asp:ContentPlaceHolder ID="RightContent" runat="server">
       RightContent
       </asp:ContentPlaceHolder>
   </div>
   <div id="leftcontent">
       <asp:ContentPlaceHolder ID="LeftContent" runat="server" >
       LeftContent
       </asp:ContentPlaceHolder>
   </div>
   </div>
   </form>
     

     

的Default.aspx     &lt;%@ Page Title =“Home Page”Language =“C#”MasterPageFile =“〜/ PDAP.master”AutoEventWireup =“true”CodeFile =“Default.aspx.cs”Inherits =“_ Default”%&gt;

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="CenterContent">
    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server" ProfileService-Path="~/Slideshow.asmx">
    <Services >
    <asp:ServiceReference Path="~/Slideshow.asmx" InlineScript="false" />
    </Services>
    </asp:ScriptManagerProxy>
        Default page with Slideshow
    <ajax:SlideShowExtender ID="SlideShowExtender1" 
                            runat="server"
                            Loop="true"
                            SlideShowAnimationType="SlideRight"
                            PlayInterval="4000"
                            SlideShowServiceMethod="GetSlides"  
                            SlideShowServicePath="Slideshow.asmx" >
    </ajax:SlideShowExtender>
    <asp:Image ID="imgslides" 
               runat="server" />
</asp:Content>

Web服务 - Slideshow.cs

  

使用System;      使用System.Collections.Generic;      使用System.Linq;      使用System.Web;      使用System.Web.Services;

     

///      ///幻灯片的摘要说明      ///      [WebService(Namespace =“http://microsoft.com/webservices/”)]      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]      //要允许使用ASP.NET AJAX从脚本调用此Web Service,请取消注释&gt;以下行。      [System.Web.Script.Services.ScriptService]      公共类幻灯片:System.Web.Services.WebService {

   public Slideshow () {

      //Uncomment the following line if using designed components 
       //InitializeComponent(); 
   }

   [System.Web.Services.WebMethod] 
   [System.Web.Script.Services.ScriptMethod]
   public AjaxControlToolkit.Slide[] GetSlides()
   {
       string[] imagenames = System.IO.Directory.GetFiles(Server.MapPath("~/Images"));
       AjaxControlToolkit.Slide[] photos = new AjaxControlToolkit.Slide[imagenames.Length];
       for (int i = 0; i < imagenames.Length; i++)
       {
           string[] file = imagenames[i].Split('\\');
           photos[i] = new AjaxControlToolkit.Slide("Images/" + file[file.Length - 1], file [file.Length - 1], "");
   }
   return photos;
   }
     

}

我举了一个例子并且正在使用它来学习,但代码是在我无法访问IIS的开发服务器上。

请看看我做错了什么。

3 个答案:

答案 0 :(得分:0)

首先,我会在您的代码中添加try catch,然后在每个函数的开头添加断点。然后用f10进行操作,当你到达代码跳转到catch的位置时,你就可以找到麻烦制造者。

让我知道你发现了什么...

答案 1 :(得分:0)

我遇到了这个错误,因为幻灯片放映器没有看到&#34; TargetControlID&#34;控制。在我的情况下,我有一个拼写错误。希望这会有所帮助。

答案 2 :(得分:0)

有完全相同的问题,类似的情况,包括母版页。当它立即失败时,无法击中任何断点。

试验和错误产生了答案 - 填写了所需的其他属性,正如pintosack所提到的 - TargetControlID。

    <asp:Image ID="Image1" runat="server" Height="316px" Width="388px" />
<cc1:SlideShowExtender ID="SlideShowExtender1" runat="server" 
    TargetControlID="Image1" 
    SlideShowServiceMethod="GetSlides" 
    AutoPlay="true" 
    ImageTitleLabelID="imageTitle"
    ImageDescriptionLabelID="imageDescription"
    NextButtonID="btnNext" 
    PlayButtonText="Play" 
    StopButtonText="Stop" 
    PreviousButtonID="prevButton" 
    PlayButtonID="btnPlay" 
    Loop="true" 
    SlideShowAnimationType="FadeInOut">
</cc1:SlideShowExtender> 
<div>
    <asp:Label ID="lblDesc" runat="server" Text=""></asp:Label><br />
    <asp:Button ID="btnPrev" runat="server" Text="Previous" />
    <asp:Button ID="btnPlay" runat="server" Text="" />
    <asp:Button ID="btnNext" runat="server" Text="Next" />
</div>