我想从主页后面的代码编辑ContentPlaceHolder的内容,请帮助我,你可以假设任何内容占位符的主页。
所有答案都会得到尊重。
答案 0 :(得分:3)
如果内容更改是微不足道的,那么请考虑客户端操作,例如: jQuery的。
否则,你可以在ContentPlaceHolder的Controls
集合上使用FindControl(),但这很麻烦。
更简洁的解决方案是利用Polymorphism。调用页面可从MasterPage的Page
属性中获得。
所以:如果你有这样的界面:
public interface IContentInjectable
{
Literal ExposedLiteral { get; }
}
您的页面模板实现如下:
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Test.master" AutoEventWireup="true" Inherits="TestPage" Codebehind="TestPage.aspx.cs" %>
<asp:Content ID="Content1" ContentPlaceHolderID="phContent" Runat="Server">
<asp:Literal ID="litTest" runat="server" />
</asp:Content>
使用代码隐藏:
public partial class TestPage : System.Web.UI.Page, IContentInjectable
{
public Literal ExposedLiteral
{
get
{
return litTest;
}
}
}
您的Masterpage代码隐藏可能是这样的:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
IContentInjectable icPage = this.Page as IContentInjectable;
if (icPage != null)
{
icPage.ExposedLiteral.Text = "Test Text";
}
}