这在很大程度上是一个关于负载排序的基本问题,但在阅读文档之后,我只想获得一些输入以进一步证实这一点。根据MSDN here,site.master load事件将在内容页面的加载事件之后触发。我正在处理的网站在site.master的标题中有一些方法可以调整内容页面上的控件。
<head id="Head1" runat="server">
...
<asp:ContentPlaceHolder ID="HeaderContent" runat="server"/>
<script type="text/javascript">
function resizeView() {
//some code in here.
}
</script>
</head>
在aspx页面上有一个点,在页面底部分配此函数作为aspx的load事件的一部分。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"%>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
$(window).on('load', resizeView);
</script>
</asp:Content>
因此,考虑到site.master之前的aspx发生了load事件,即使它位于site.master的头部,resizeView()方法是否会在那时未定义?
现在,当我运行该网站时似乎就是这种情况。
答案 0 :(得分:0)
<强>母版强>
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MainPage.master.cs" Inherits="MainPageScript" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<script>
function MasterPageFunction() {
alert('I am at masterpage');
}
</script>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
<强> ContentPage.cs 强>
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "howtocallmasterpagescript", "MasterPageFunction();", true);
}