Asp.Net - UserControl - Наследовать от MasterPage - PullRequest
0 голосов
/ 15 июня 2010

Возможно ли для пользовательского элемента управления (ascx) сделать что-то вроде herit из 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, и я хочу добавить только те файлы J, которые необходимы

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Я думаю, что ответ, который вы ищете, это использовать Page.RegisterClientScriptInclude в каждом из элементов управления, для которых требуется поддерживающий код Javascript, каждый раз используя одно и то же значение ключа.

Таким образом, 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));
}
0 голосов
/ 15 июня 2010

Я предполагаю, что ваши пользовательские элементы управления выводят URL-адрес 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");

Это может указать вам верное направление - я все еще не совсем уверен, что вы пытаетесь сделать.

...