Если изменения содержимого тривиальны и косметичны, рассмотрите возможность манипулирования на стороне клиента, например, jQuery.
В противном случае вы могли бы использовать FindControl () для коллекции Controls
ContentPlaceHolder,но это чревато и грязно.
Более точное решение - воспользоваться преимуществом Полиморфизм .Вызывающая страница доступна из свойства Page
MasterPage.
Итак: если у вас есть такой интерфейс:
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;
}
}
}
Ваш код мастер-страницы может выглядеть следующим образом:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
IContentInjectable icPage = this.Page as IContentInjectable;
if (icPage != null)
{
icPage.ExposedLiteral.Text = "Test Text";
}
}