我想從母版頁後面的代碼中編輯ContentPlaceHolder的內容,請幫助我,您可以假定任何母版頁都帶有任何內容佔位符。如何從母版頁操作ContentPlaceHolder內容
所有答案都會得到尊重。
我想從母版頁後面的代碼中編輯ContentPlaceHolder的內容,請幫助我,您可以假定任何母版頁都帶有任何內容佔位符。如何從母版頁操作ContentPlaceHolder內容
所有答案都會得到尊重。
如果內容變化很瑣碎和美觀,請考慮客戶端操縱,例如, jQuery的。
否則,你可能使用FindControl()通過ContentPlaceHolder的集合Controls
,但這是充滿和雜亂。
整潔的解決方案是利用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;
}
}
}
您的母版頁代碼可能是這樣的:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
IContentInjectable icPage = this.Page as IContentInjectable;
if (icPage != null)
{
icPage.ExposedLiteral.Text = "Test Text";
}
}
當查找控件是一行時,這看起來好像很多額外的代碼。寫的痛苦,但可能沒有如界面等比較 – 2011-05-23 12:27:59
我寧願說它反對主內容。你能解釋爲什麼你需要這個嗎? – naveen 2011-05-23 11:09:55