2013-07-31 6 views
1

asp.net 페이지를 컴파일하려고 시도 할 때 비정상적인 오류 집합을 다루었습니다. 이 페이지는 내 masterpage에서 상속합니다. 거기에서 Scriptmanager를 가져와야합니다. 그러나 내가 얻는 오류는 그렇지 않다는 것을 제안합니다.ScriptManager를 ScriptmanagerProxy와 함께 사용하는 방법

<%@ Page Title="MassUpdate" Language="C#" 
     MasterPageFile="~/Site1.Master" 
     AutoEventWireup="true" 
     CodeBehind="Update.aspx.cs" 
     Inherits="AdminSite.Update" 
     MaintainScrollPositionOnPostback="true" %> 


    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server" > 

     <div id="contentarea"> 
      <div> 
       <h3 style="color:Red; padding-left:5px;"> 
        WARNING - This page can push large amounts of data into the database. Use care when using it! 
       </h3> 
      </div>  


     <asp:ScriptManagerProxy runat="server" > 

     </asp:ScriptManagerProxy> 

을 그리고 내 masterpage에,이 있습니다 :

지금은 내 페이지에서 이것을 가지고

<body> 
    <header> 
     <div id="banner"> 

      <h1 style="color:#DBFFFF">UAC Parts Admin</h1>  
    </div> 
</header> 
<form id="form1" runat="server"> 

<div id="container"> 

    <asp:ContentPlaceHolder ID="MainContent" runat="server"> 


    </asp:ContentPlaceHolder> 
    <asp:LoginView ID="LoginView1" runat="server" EnableViewState="false"> 
     <LoggedInTemplate> 
     <div id="menubar"> 

     <h6>Reports</h6> 
     <div> 
      <asp:ScriptManager ID="ScriptManager1" runat="server"> 
       <Scripts> 
        <asp:ScriptReference Path="~/Scripts/jquery.js" /> 
        <asp:ScriptReference Path="~/Scripts/jqueryui.js" /> 
        <asp:ScriptReference Path="~/Scripts/menubar.js" /> 
       </Scripts> 
      </asp:ScriptManager> 

첫 번째 오류이입니다 :

제어와 ID ''는 페이지에 ScriptManager가 필요합니다. ScriptManager는 필요한 모든 컨트롤 앞에 나타나야합니다.

내 페이지에 ScriptManager가없고 대신 ScriptManagerProxy를 사용하면 이런 현상이 발생합니다. 마스터 페이지에 ScriptManager가 있어도 마찬가지입니다.

이제 내 페이지에 ScriptManager를 넣을 때 다른 오류가 발생합니다.

ScriptManager의 인스턴스 하나만 페이지에 추가 할 수 있습니다.

이 기능을 사용하려면 어떻게해야합니까? 내 너겟 패키지 중 하나에 문제가 있습니까? (JuiceUI, Widgmo 등)

요청시 코드를 게시하게되어 기쁩니다.

편집 : 그래,이 모든 것이 이상해졌습니다. 이상하게 마스터 페이지에는 문제 자체가 없었습니다. 하지만 다른 페이지를 사용할 때만 문제가 발생했습니다. 폼 태그 뒤에 첫 번째 요소로 이동하면 내가 믿는 해결책이되었습니다. ScriptManagerProxy도 내 코드에서 조금 옮겼습니다.

+1

마스터 페이지에 'ScriptManager'가 포함 된 마크 업을 게시하고 .aspx 페이지에'ScriptManagerProxy '를 게시 할 수 있습니까? – Jay

+0

분명히 그렇게하겠습니다. –

+0

가능한 복제물 [ScriptManager가 필요한 컨트롤 앞에 나타나야합니다] (http://stackoverflow.com/questions/13473808/the-scriptmanager-must-appear-before-any-controls-that-need-it) – joshua

답변

1

ScriptManager은 어떤 ContentPlaceHolders보다 먼저 r. 일반적으로 Joshua가 지적했듯이 스크립트 관리자는 form 태그 다음의 첫 번째 요소에 배치됩니다. 좋아요 :

<form id="form1" runat="server"> 

    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     <Scripts> 
      <asp:ScriptReference Path="~/Scripts/jquery.js" /> 
      <asp:ScriptReference Path="~/Scripts/jqueryui.js" /> 
      <asp:ScriptReference Path="~/Scripts/menubar.js" /> 
     </Scripts> 
    </asp:ScriptManager> 

    <div id="container"> 

     <asp:ContentPlaceHolder ID="MainContent" runat="server"> 


     </asp:ContentPlaceHolder> 
    </div> 
</form> 

이유는 다음과 같습니다.이 마스터 페이지를 사용하는 aspx 페이지는 ContentPlaceHolder 컨트롤에있는 콘텐트를 제공합니다. ScriptManager 앞에 ContentPlaceHolder이 표시되었으므로 ScriptManager은 나중에 페이지가 정의 될 때까지 정의되지 않으므로 콘텐츠 페이지에있는 ScriptManagerProxy이 던졌습니다.

여러 개의 서로 다른 위치에서 컨트롤을 정의하고 있기 때문에 생각하면 약간 이상 할 수 있습니다. 그러나 코드 숨김은 모든 것을 모을 때까지 실행되지 않습니다.

+0

고맙습니다. 그것은 확실히 문제였습니다. –

2

.aspx 페이지의 masterpage 및 ScriptManagerProxy에 ScriptManager를 배치합니다.

2

마스터 페이지의 양식 선언 근처에 스크립트 관리자를 두어야합니다. 두 번째 질문에 대한 Walkthrough: Creating an Ajax-Enabled Web Site

<body> 
    <form runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
     ... 
    </form> 
</body> 

:

는이 또한 볼이 ScriptManager Control Overview

Only one instance of the ScriptManager control can be added to the page. 
The page can include the control directly, or indirectly inside a nested 
component such as a user control, content page for a master page, or nested 
master page. If a page already contains a ScriptManager control, but a nested 
or parent component needs additional features of the ScriptManager control, the 
component can include a ScriptManagerProxy control. 
For example, the ScriptManagerProxy control enables you to add scripts and 
services that are specific to nested components. 
컨텐츠 페이지에서 사용하기를 원한다면 당신은 마스터 페이지에서 스크립트 관리자를 제거해야 하나

또는 마스터 페이지의 스크립트 관리자를 추가 한 콘텐츠 페이지에서 프록시 사용