[英]Asp.Net - UserControl - Inherit from MasterPage
用戶控件(ascx)是否可以從MasterPage做類似繼承的操作?
我的觀點是,在我的一個用戶控件中(僅由一種MasterPage使用),我想使用<asp:content>
標記,但是我不能,只能在使用該用戶控件的頁面中使用...
因此,我必須在使用該用戶控件的每個頁面中重復一些代碼...
例如,每次,我需要添加類似的內容:
<asp:Content ID="cntJavascript" ContentPlaceHolderID="cphJavascript" runat="server">
<script type="text/javascript" src="<%= Url.Content("~/Content/js/UcJs.js") %>"></script>
</asp:Content>
那是因為,我希望所有Js文件都位於MasterPage中的同一位置,而我只想添加所需的Js。
我認為您正在尋找的答案是在每個需要支持Javascript代碼的控件中使用Page.RegisterClientScriptInclude
,每次都使用相同的鍵值。
這樣,無論有多少控件需要,Javascript文件都將僅包含一次。
internal static void RegisterJavascriptInclude(Page page, string includeFile)
{
string key = includeFile.ToLowerInvariant();
if (!page.ClientScript.IsClientScriptIncludeRegistered(key))
page.ClientScript.RegisterClientScriptInclude(key, page.ResolveClientUrl(includeFile));
}
我假設您的用戶控件輸出的JavaScript網址對於每個用戶控件都不同。 我可以想到幾種方法來做到這一點。
在您的母版頁中添加一個方法,例如:
void AddJavascriptFile(string url) {
this.ContentPlaceHolder1.Controls.Add(
new LiteralControl(
"<script type='text/javascript' src='" + url + "'></script>"));
}
...然后在用戶控件中,您可以像這樣添加javascript:
((MyMasterPage)((System.Web.UI.Page)this.Parent).Master).AddJavascriptFile(
"http://example.com/javascript.js");
這可能會為您指明正確的方向-我仍不確定您要做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.