对象未设置为幻灯片放映扩展器的引用
本文关键字:扩展器 引用 幻灯片 设置 对象 | 更新日期: 2023-09-27 18:35:21
我对这个问题很不知所措。我想将AjaxControltoolkit中的SlideShowExtender用于"类似CMS"的网站,但是我收到错误消息..."ajaxcontroltoolkit.slideshowextender 对象引用未设置为对象的实例。ajaxcontroltoolkit.slideshowextender.oninit(eventargs e)."我正在使用母版页,并在默认页面上包含一个脚本管理器代理,在 PDAP.master 母版页中包含一个 tookitscriptmanager。这是代码。这是粗略的草稿,仅处于概念阶段。
PDAP.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="PDAP.master.cs" inherits="PDAP" %> 过渡//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>
默认.aspx <%@ 页面标题="主页" 语言="C#" masterPageFile="~/PDAP.master" AutoEventWireup="true" CodeFile="default.aspx.cs" inherits="_Default" %>
<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 服务 - 幻灯片放映.cs
我使用系统; 使用 System.Collections.Generic; 使用System.Linq; 使用系统网; 使用系统网络服务;
/// 幻灯片放映的摘要说明 /// [WebService(Namespace ="http://microsoft.com/webservices/")] [WebServiceBinding(ConformTo = WsiProfiles.BasicProfile1_1)] 若要允许使用 AJAX 从脚本调用此 Web 服务 ASP.NET 请取消注释>以下行。 [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 的开发服务器上。
请看一看,看看我做错了什么。
首先,我会在你的代码中放一个尝试捕获,然后在每个函数的开头放置断点。然后使用 f10 进行操作,当您到达代码跳入捕获的点时,您就可以识别麻烦制造者。
让我知道你发现了什么...
我遇到了这个错误,这是因为幻灯片扩展器没有看到"目标控制ID"控件。 就我而言,我有一个拼写错误。 希望这有帮助。
有完全相同的问题,类似的场景,包括母版页。 无法命中任何断点,因为它立即失败。
反复试验得出了答案 - 需要填写其余属性,并且正如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>