C# Asp.Net-UserControl-从母版页继承
用户控件(ascx)是否可以从母版页执行类似herit的操作 我的观点是,在我的一个用户控件(仅由一种母版页使用)中,我想使用C# Asp.Net-UserControl-从母版页继承,c#,user-controls,asp.net-3.5,master-pages,C#,User Controls,Asp.net 3.5,Master Pages,用户控件(ascx)是否可以从母版页执行类似herit的操作 我的观点是,在我的一个用户控件(仅由一种母版页使用)中,我想使用标记,但我不能,我只能在使用该用户控件的页面中 所以,我必须在使用该用户控件的每个页面中重复一些代码 更新 例如,每次我都需要添加如下内容: <asp:Content ID="cntJavascript" ContentPlaceHolderID="cphJavascript" runat="server"> <script type="text
标记,但我不能,我只能在使用该用户控件的页面中
所以,我必须在使用该用户控件的每个页面中重复一些代码
更新
例如,每次我都需要添加如下内容:
<asp:Content ID="cntJavascript" ContentPlaceHolderID="cphJavascript" runat="server">
<script type="text/javascript" src="<%= Url.Content("~/Content/js/UcJs.js") %>"></script>
</asp:Content>
这是因为,我希望我的所有Js文件都在母版页的同一位置,我只想添加所需的Js,我假设您的用户控件输出的javascript url对于每个用户控件都是不同的。我可以想出几种方法来做到这一点 在母版页中添加一个方法,如:
void AddJavascriptFile(string url) {
this.ContentPlaceHolder1.Controls.Add(
new LiteralControl(
"<script type='text/javascript' src='" + url + "'></script>"));
}
这可能会为您指明正确的方向-我仍然不完全确定您正在尝试做什么。我认为您正在寻找的答案是使用
页面。RegisterClient Scriptin在每个需要支持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));
}
internal static void RegisterJavascriptInclude(Page page, string includeFile)
{
string key = includeFile.ToLowerInvariant();
if (!page.ClientScript.IsClientScriptIncludeRegistered(key))
page.ClientScript.RegisterClientScriptInclude(key, page.ResolveClientUrl(includeFile));
}