我有一个ASP.NET内容页面。与内容页面关联的HTML标记在母版页中声明。我需要从内容页面向HTML标记添加属性。我的问题是,我不知道如何从内容页面访问此HTML标记。
有人可以告诉我该怎么做吗?
谢谢
答案 0 :(得分:1)
如果必须
,您可以随时在主页上将其公开为属性public Label MyLabel
{
get { return myLabel; }
}
然后,您可以从内容页面轻松访问它:
var master = Master as MyAwesomeMasterPage;
if(master != null)
((MyAwesomeMasterPage)Master).MyLabel.Attributes["bgcolor"] = "lightblue";
This MSDN article会为您提供更多详细信息,包括如何将您的母版页属性设置为强类型。
答案 1 :(得分:1)
我今天早上编写了一个例程,帮助我在母版页层次结构中递归地处理母版页控件(如果你使用的是嵌套母版页)。我将它实现为扩展方法。也许你会发现它很有用:
public static TResult FindControlInMasterPages<TResult>(this MasterPage masterPage, string id)
where TResult : Control
{
return masterPage == null ? null :
masterPage.FindControl(id) as TResult ?? FindControlInMasterPages<TResult>(masterPage.Master, id);
}
您可以这样申请:
this.Master.FindControlInMasterPages<Label>("myLabel").Attributes["attr"] = "value";
答案 2 :(得分:0)
我用丑陋的黑客做过一次,就像所有黑客一样,这是由于没有时间去弄清楚如何正确地做到这一点。
我使用<HTML>
控件替换了母版页中的<asp:Literal />
标记,然后将该文字控件公开为母版页的属性,我可以从内容页面访问该文件。
这是一种可怕的方式,我相信会有比这更好的答案,但如果你在一个洞里可能会有所帮助。