代码之家  ›  专栏  ›  技术社区  ›  RonnBlack

CodePlex中的MVCScriptManager是否与ViewUserControls一起工作?

  •  1
  • RonnBlack  · 技术社区  · 15 年前

    我试过了 MVCScriptManager 从codeplex,它似乎工作得很好,直到您尝试将它与viewUserControl结合使用。

    在这种类型的场景中使用它时,会出现以下错误。

    将rendermode设置为的scriptmanager 主人不在。这样 脚本管理器必须在其前面 rendermode设置为slave。

    在网站的标题中,有一个脚本管理器的呈现模式设置为“master”。master页,但似乎先呈现部分视图。

    有没有办法解决这个问题?

    ==母版页====

    <%@ 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>
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Nathan Taylor    15 年前

    我使用MVC脚本管理器已经有一段时间了,答案是 不,不能将其添加到部分视图中 . 必须在.aspx视图中定义必要的脚本include。

    <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>