是否可以从内容页面重新绑定转发器(在母版页内)?
我的页面基于主页面和内容页面,并且我有一些下载文件的链接(锚点)!
单击这些链接后,内容页面的 page_load 会触发,并会显示下载窗口。
但是我们永远不会得到母版页的 page_Load,并且在母版页中我有一个显示下载计数的摘要。
如何在显示下载窗口之前从内容页面重新绑定该摘要(母版页内)?
是否可以从内容页面重新绑定转发器(在母版页内)?
我的页面基于主页面和内容页面,并且我有一些下载文件的链接(锚点)!
单击这些链接后,内容页面的 page_load 会触发,并会显示下载窗口。
但是我们永远不会得到母版页的 page_Load,并且在母版页中我有一个显示下载计数的摘要。
如何在显示下载窗口之前从内容页面重新绑定该摘要(母版页内)?
是的。您可以使用 Web 表单访问母版页,this.Master
然后您必须将其转换为适当的类型。从那里您可以访问您定义的任何公共方法或属性。
简单地在ReBind
那里添加一个方法来做你想要的,你应该很高兴。
编辑
它会是这样的:
(this.Master as WhateverTypeYourRealMasterPageIs).ReBind();
是的,这很简单。您可以从内容页面“找到”控件。这是我绑定到 GridView 控件的示例。
掌握:
<asp:GridView runat="server" ID="gridViewMaster" AutoGenerateColumns="true" />
内容页:
var gridView = (GridView) Master.FindControl("gridViewMaster");
gridView.DataSource = dt;
gridView.DataBind();
只需将网格视图对象和控件 ID 替换为您的中继器......并将其绑定到您想要的任何对象。
编辑 - 这是查找服务器端 div 的代码:
var divMaster = (System.Web.UI.HtmlControls.HtmlGenericControl)Master.FindControl("divMaster");
divMaster.InnerHtml = "<h2>Hello World</h2>";
这样做的正确方法是让用户控件触发母版页订阅的事件。如果您需要一些示例代码,请告诉我
一些示例代码:
在您的用户控件中,添加以下事件:
公共事件 EventHandler RefreshRequested;
只要用户控件需要通过调用以下方法进行刷新,就会引发此事件:
private void OnRefreshRequested()
{
//make sure the event is being listened to. no point raising an event if no one cares!
if (this.RefreshRequested != null)
{
this.RefreshRequested(this, EventArgs.Empty);
}
}
现在,母版页将订阅用户控件的事件并采取相应的行动。订阅事件就像订阅任何其他事件(即:Button_Click)一样。
让我知道这是否可以解决问题。
您可以向子级公开母版页控件。使用母版页中的访问器将控件公开...例如:
public Repeater MasterpageRptr {get;set;}
然后在您的子页面上,添加 MasterType 定义:
<%@ Page Language="C#" Title="Content Page" MasterPageFile="~/MyMaster.master"%>
<%@ MasterType TypeName="MyMaster" %>
(where MyMaster is the master page class file)
然后您可以使用访问器在您的子代码隐藏中调用它。
.
.
如果有帮助请投票。