它不在我的方法中的if块中执行语句
母版页: -
页面加载事件: -
Control c = new Control();
DoSomething(c);
我的方法: -
protected void DoSomething(Control control)(
{
foreach (Control c in control.Controls)
{
if(typeof(c).Equals(Telerik.Web.UI.RadEditor))
{
Telerik.Web.UI.RadEditor rad = c as Telerik.Web.UI.RadEditor;
label1.Visible = true; label1.Text = "dhchk";
rad.CssFiles.Add("~/styles/myStyle.css");
rad.CssFiles.Add("~/styles/myStyle2.css");
rad.CssFiles.Add("~/styles/myStyle3.css");
}
else
{
DoSomething(c);
}
}
}
我的内容页面: -
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<telerik:RadEditor ID="Editor1" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server">
</telerik:RadEditor>
<telerik:RadEditor ID="Editor2" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server">
</telerik:RadEditor>
[编辑] 确定调试时..我点击“c”然后快速观看...它说“当前上下文中不存在名称'c'”(?!?!)如何那么?
答案 0 :(得分:1)
好吧,Master页面首先渲染,因此您无法从母版页访问任何内容页面控件。您可以使用事件并将控件从内容传递给主
来实现此目的UDPATE: 再次 - 从母版页访问用户控件是整个master-&gt;内容设计中的缺陷。我能想象的最接近的是添加静态函数
public static void AddDesign(RadEditor obj)
{
...
}
然后从用户控件的Page_Load调用该函数
MASTER_PAGE_CLASS_NAME.AddDesign(RadEditor1);
答案 1 :(得分:1)
好吧,我不确定,您可以像这样访问页面中的控件。
首先:该编辑器应该可能在某个Panel(或其他一些容器)中,所以我应该是这样的:
<asp:Panel ID="pnl1" runat="server">
<telerik:RadEditor ID="Editor1" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server" />
<telerik:RadEditor ID="Editor2" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server" />
</asp:Panel>
然后试试这个:
protected void Page_Load(object sender, EventArgs e)
{
foreach (Controls c in pnl1.Controls)
{
if (c is Telerik.Web.UI.RadEditor)
{
// do you stuff ...
}
}
}
答案 2 :(得分:1)
您应该更改内容并从内容控件中调用MasterPage方法。
在您的母版页中添加方法:
public void DoSomething(Telerik.Web.UI.RadEditor rad)
{
label1.Visible = true; label1.Text = "dhchk";
rad.CssFiles.Add("~/styles/myStyle.css");
rad.CssFiles.Add("~/styles/myStyle2.css");
rad.CssFiles.Add("~/styles/myStyle3.css");
}
通过页面/内容控件中的相应事件调用该函数。例如Page.Load,Editor1.Load等
Master.DoSomething(Editor1);
在母版页中,您应该在内容控件中搜索子控件
ContentPlaceHolder1.FindControl("Editor1");
或者您可以尝试类似:
foreach (Control c in ContentPlaceHolder1.Controls)
{
if(typeof(c).Equals(Telerik.Web.UI.RadEditor))
{
Telerik.Web.UI.RadEditor rad = c as Telerik.Web.UI.RadEditor;
label1.Visible = true; label1.Text = "dhchk";
rad.CssFiles.Add("~/styles/myStyle.css");
rad.CssFiles.Add("~/styles/myStyle2.css");
rad.CssFiles.Add("~/styles/myStyle3.css");
}
else
{
DoSomething(c);
}
}
答案 3 :(得分:0)
主页的加载和呈现事件在内容页面的那些之后被触发(如所述here)。因此,当这两个事件被触发时,内容页面中的控件应该可用吗?