【问题标题】:Adding Jquery to aspx page when Master page has already declared Jquery母版页已声明 Jquery 时将 Jquery 添加到 aspx 页面
【发布时间】:2026-01-08 12:15:02
【问题描述】:

我需要一些帮助来找出将 jquery 代码添加到我的 aspx 文件的最佳方法。我们在 VS2008 中有一个使用母版页的大型前端解决方案。在母版页中,我们有一个 ContentPlaceHolder,您可以在其中向<head> 添加内容,但占位符的位置位于声明 jquery 本地路径的代码上方。我需要将 ContentPlaceHolder 移动到 jquery 下面的位置吗?如果是这样,这样做不会导致一些潜在的问题吗?我尝试在脚本声明标签下添加一个额外的 ContentPlaceHolder,但这会导致 ViewState 错误(我认为这与我为我的页面添加的代码有关,以允许 IE 使用 CSS3)。

以下是主文件中的相关代码:

<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Class.Master.cs" Inherits="Company.Project.Masters.Class" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">

<title><%# Page.Title %></title>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<asp:ContentPlaceHolder ID="cphHead" runat="server" >
    </asp:ContentPlaceHolder>
<link href="~/inc/style.css" rel="stylesheet" type="text/css" />
<script src='<%# ResolveUrl("~/inc/utils.js") %>' type="text/javascript"></script>
<script type="text/javascript">
//some js stuff here
<style type="text/css">
        // some css stuff here
</style>

<script language="javascript" type="text/javascript" src='local/path/to/jquery' ></script>
<script language="javascript" type="text/javascript" src='local/path/to/jquery-ui-1.10.3.custom.min.js") %>'></script>

<script type="text/javascript">
    $(document).ready(function() {      
        //some jquery stuff here
        })
    }); 
</script>
</head>

下面是我添加到页面的 .cs 文件中的代码,以允许 CSS3 元素在 IE 中工作。这个错误看起来与 ViewState 错误有关

protected void Page_Load(object sender, EventArgs e)
{     
       HtmlMeta xuac = new HtmlMeta();
        xuac.HttpEquiv = "X-UA-Compatible";
        xuac.Content = "IE=edge";
        Header.Controls.AddAt(0, xuac);
}

当我在 MasterPage 中添加新的 ContentPlaceHolder 时出现错误:

加载视图状态失败。视图状态所在的控制树 正在加载的必须与用于保存的控制树匹配 上一个请求期间的视图状态。例如,当添加 动态控制,在回发期间添加的控件必须匹配 在初始阶段添加的控件的类型和位置 请求。

【问题讨论】:

    标签: c# jquery asp.net css master-pages


    【解决方案1】:

    一一谈到你的所有观点。

    您可以在母版页中有多个内容占位符,您可以在其他页面中引用它们。您应该在 jQuery 脚本之后添加一个内容占位符。并且从子页面向这个占位符添加内容,应该不会造成任何问题。

    请分享您在添加额外内容占位符时遇到的视图状态错误。您可以浏览浏览器控制台以获取有关视图状态问题的更多信息。

    【讨论】:

    • 谢谢,我已经更新了我的问题,包括在 jQuery 脚本下添加新的 contentplaceholder 时出现的错误。
    • 由于您在每个页面加载中添加 xuac,所以它会产生错误(因为视图状态因此而改变)。您应该只在需要时才考虑添加新控件,例如if(!Page.IsPostBack) 等等。
    • 如果将该代码放在 if(!Page.IsPostBack) 中似乎没有任何区别,我在回发时收到“加载视图状态失败”错误。
    • 我不知道为什么它不工作,理想情况下应该。因为在if(!Page.IsPostBack) 中放置代码后会导致视图状态树在请求中相同。进行更改,加载页面(正常 GET)然后发帖(我们将是现实生活中的正常场景),您可能只是重新发布而不是重新开始。
    最近更新 更多