尝试构建自己的用户控件:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TabMenu.ascx.cs" Inherits="TabMenu" %>
<asp:Panel runat="server" CssClass="tabWrapper">
<div class="tab tabSelected"><a href="artworkHome.aspx">Home</a></div>
<div class="tab"><a href="#">Create New</a></div>
<div class="tab"><a href="#">Help!</a></div>
<div class="clear"></div>
<asp:Literal runat="server" ID="lol"></asp:Literal>
</asp:Panel>
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TabMenu : System.Web.UI.UserControl
{
public string TabGroup { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (this.TabGroup == "Artwork")
{
lol.Text = "LOL!";
}
}
}
这样使用时显示正常:
<CrystalControls:TabMenu runat="server" TabGroup="Artwork" />
除了“LOL!”没有显示。我可能错误地使用了属性等等,我希望很清楚我正在尝试做什么?
答案 0 :(得分:1)
我试过你的例子,但它一切正常,我确实得到了哈哈!在字面上。 如果你调试代码,并在检查Tabgroup ==“ArtWork”时设置一个braekpoint,你可以检查TabGroup的值,也许它还没有设置?
答案 1 :(得分:1)
您的控件编码正确且工作正常。我怀疑你没有看到LOL的原因!文本是由于HTML或CSS中的某些内容掩盖了它。例如,您可能在其中一个标签上有display:none
。尝试查看页面源并查看LOL!文字在里面 - 我打赌它是。
答案 2 :(得分:0)
你的问题是Page_Load不是一个自动连接用户控件的事件,请参阅autoeventwireup,个人我讨厌订阅我自己的事件的想法,你应该尽可能覆盖提供的虚拟方法..
试试这个......
protected override void OnLoad(EventArgs e)
{
if (this.TabGroup == "Artwork")
{
lol.Text = "LOL!";
}
base.OnLoad(e);
}
甚至这个,如果它可能是控件的用户可能在页面生命周期期间更改TabGroup ..
protected override void OnPreRender(EventArgs e)
{
if (this.TabGroup == "Artwork")
{
lol.Text = "LOL!";
}
base.OnPreRender(e);
}