Gui*_*ais 6 asp.net master-pages findcontrol
今天是个好日子,
我正在ASP.NET中构建一个页面,并在此过程中使用母版页.
我的母版页中有一个内容地点持有人名称"cphBody",其中包含该母版页作为母版页的每个页面的正文.
在ASP.NET网页中,我有一个Content标签(引用"cphBody"),它还包含一些控件(按钮,Infragistics控件等),我想在CodeBehind文件中访问这些控件.但是,我不能直接这样做(this.myControl ...),因为它们嵌套在Content标签中.
我找到了FindControl方法的解决方法.
ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder) Master.FindControl("cphBody");
ControlType myControl = (ControlType) contentPlaceHolder.FindControl("ControlName");
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我怀疑它不是一个非常好的设计.你们知道更优雅的方式吗?
谢谢!
Guillaume Gervais.
我试着避免使用FindControl,除非别无选择,并且通常采用更简洁的方式.
如何在子页面顶部包含主页面的路径
<%@ MasterType VirtualPath="~/MasterPages/PublicUI.Master" %>
Run Code Online (Sandbox Code Playgroud)
这将允许您直接从您的母版页代码中调用代码.
然后从你的母版页代码后面你可以让一个属性返回你的控件,或在母版页上制作一个方法获得你的控制等.
public Label SomethingLabel
{
get { return lblSomething; }
}
//or
public string SomethingText
{
get { return lblSomething.Text; }
set { lblSomething.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)
指母版页上的标签
<asp:Label ID="lblSomething" runat="server" />
Run Code Online (Sandbox Code Playgroud)
用法:
Master.SomethingLabel.Text = "some text";
//or
Master.SomethingText = "some text";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40893 次 |
| 最近记录: |