簡體   English   中英

Asp.Net-UserControl-繼承自MasterPage

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM