2010-05-19 2 views
1

J'ai essayé le code MVCScriptManager de CodePlex et il semble fonctionner jusqu'à ce que vous essayiez de l'utiliser avec un ViewUserControl. Quand il est utilisé dans ce type de scénario, il donne l'erreur suivante:Est-ce que MVCScriptManager de CodePlex fonctionne avec ViewUserControls?

Un ScriptManager avec RenderMode défini sur Maître n'est pas présent. Un tel ScriptManager doit précéder un avec RenderMode réglé sur Slave.

Il existe un ScriptManager avec le mode de rendu défini sur «Maître» dans l'en-tête de la page Site.Master mais il semble que les vues partielles soient affichées en premier.

Y at-il un moyen de contourner ce problème?

=== ==== Maître page

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<!DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <mvc:ScriptManager ID="ScriptManager1" RenderMode="Master" 
    runat="server" EnableHttpCompression="true" EnableHttpExpiration="true" 
    HttpExpirationInDays="30"> 
     <Scripts> 
      <mvc:ScriptReference EnableCrunching="true" 
      Path="~/Scripts/jquery-1.3.2.js" /> 
     </Scripts> 
    </mvc:ScriptManager> 
</head> 

<body> 
    <div class="page"> 

     <div id="header"> 
      <div id="title"> 
       <h1>My MVC Application</h1> 
      </div> 

      <div id="logindisplay"> 
       <% Html.RenderPartial("LogOnUserControl"); %> 
      </div> 

==== ==== LogOnUserControl.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<% 
    if (Request.IsAuthenticated) { 
%> 
     Welcome <b><%= Html.Encode(Page.User.Identity.Name) %></b>! 
     [ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ] 
<% 
    } 
    else { 
%> 
     [ <%= Html.ActionLink("Log On", "LogOn", "Account") %> ] 
<% 
    } 
%> 

    <mvc:ScriptManager ID="ScriptManager1" RenderMode="Slave" 
    runat="server" EnableHttpCompression="true" 
    EnableHttpExpiration="true" HttpExpirationInDays="30"> 
     <Scripts> 
      <mvc:ScriptReference EnableCrunching="true" 
      Path="~/Scripts/SampleScript_LoginViewUserControl.js" /> 
     </Scripts> 
    </mvc:ScriptManager> 

Répondre

0

J'utilise le MVC ScriptManager pendant un certain temps maintenant et la réponse est non, vous ne pouvez pas l'ajouter à une vue partielle. Vous devez définir l'inclusion de script nécessaire dans une vue .ASPX.

<mvc:ScriptManager RenderMode="Slave" runat="server" EnableHttpExpiration="true" HttpExpirationInDays="30"> 
    <Scripts> 
     <mvc:ScriptReference Path="~/Content/Js/jquery/jquery.jgrowl.min.js" /> 
     <mvc:ScriptReference Path="~/Content/Js/core/script.min.js" /> 
     <mvc:ScriptReference Path="~/Content/Js/core/json2.min.js" /> 
    </Scripts> 
</mvc:ScriptManager> 
Questions connexes