1

私はこの問題で頭がいっぱいです。「CMS のような」Web サイトに AjaxControltoolkit の SlideShowExtender を使用したいのですが、「ajaxcontroltoolkit.slideshowextender オブジェクト参照がオブジェクトのインスタンスに設定されていません。ajaxcontroltoolkit.slideshowextender.oninit(eventargs e)」私はマスターページを使用しており、デフォルト ページに scriptmanagerproxy を含め、PDAP.master マスターページに takeitscriptmanager を含めました。これがコードです。これはラフ ドラフトであり、構想段階にすぎません。

PDAP.マスター

<%@ 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 <%@ Page Title="Home Page" Language="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 サービス - Slideshow.cs

システムを使用する; System.Collections.Generic の使用; System.Linq を使用します。System.Web の使用; System.Web.Services を使用します。

/// /// スライドショーの概要 /// [WebService(Namespace ="http://microsoft.com/webservices/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // この Web サービスでASP.NET AJAX を使用してスクリプトから呼び出されるようにするには、次の行のコメントを解除します。[System.Web.Script.Services.ScriptService] public class Slideshow : 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 にアクセスできない開発サーバー上にあります。

見て、私が間違っていることを見てください。

4

3 に答える 3

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>
于 2014-06-21T01:39:57.733 に答える
0

まず、コードに try catch を配置し、次に各関数の先頭にブレーク ポイントを配置します。次に、f10 を使用してウォークスルーし、コードがキャッチにジャンプするポイントに到達すると、トラブルメーカーを特定できます。

あなたが見つけたものを教えてください...

于 2013-10-14T17:04:18.950 に答える