我有以下设置
自定义控件1 - MyListControl - 嵌套集合 - MyListItemControl
MyListItemControl继承自Panel,所以我可以这样写:
<cc1:MyListControl ID="MyListControl1" runat="server">
<ListItems>
<cc1:MyListItemControl ID="MyListItemControl1" runat="server" CustomProperty="1">
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</cc1:MyListItemControl>
</ListItems>
</cc1:MyListControl>
我没有得到任何错误,Control确实渲染,只是没有正确。上面的代码如果放在Formview中,linkbutton不会得到所有呈现的PostBack脚本
<a id="LinkButton1">Edit</a>
有谁知道为什么会发生这种情况并且链接按钮没有像通常那样呈现?
TIA
安德鲁
答案 0 :(得分:0)
您是否在生成的html上的其他位置发生了某些ID名称冲突?
控件应该有一个受损版本的LinkButton1名称,因为它在转发器中?
答案 1 :(得分:0)
我意识到这有点偏旧,但我遇到了同样的问题并在我的情况下修复了它。希望这有助于在这个问题上发生的其他人。
我的问题是我没有将LinkButton添加到我的服务器控件的Control集合(LinkButton的父控件)。我没有深入研究导致这个问题的具体原因。
祝你好运。答案 2 :(得分:0)
对我而言,看起来像ASP.Net中的一个错误,它与其父控件集合中的LinkButton顺序有关。
此片段:
protected override void OnLoad(EventArgs e)
{
// show some data
_l = new Label();
_l.Visible = false;
_l.Text = "Current Web's Url: " + SPContext.Current.Web.Url;
Controls.Add(_l);
// add a button with some processing
_lb = new LinkButton();
_lb.Text = "Click here";
_lb.Click += new EventHandler(_lb_Click);
Controls.Add(_lb);
}
生成此HTML:
<span id="ctl00_PlaceHolderMain_ads1"><h1>This is a custom control</h1><span>Current Web's Url: http://arielki03:9999/sites/ads</span><a href="javascript:__doPostBack('ctl00$PlaceHolderMain$ctl01','')">Click here</a></span>
但是这个片段(只是颠倒了我在上面添加控件的顺序,所以LinkButton是第一个):
protected override void OnLoad(EventArgs e)
{
// add a button with some processing
_lb = new LinkButton();
_lb.Text = "Click here";
_lb.Click += new EventHandler(_lb_Click);
Controls.Add(_lb);
// show some data
_l = new Label();
_l.Visible = false;
_l.Text = "Current Web's Url: " + SPContext.Current.Web.Url;
Controls.Add(_l);
}
不显示任何控制!!!
问题似乎是LinkButton是父控件集合中的第一个。解决方法:在它之前添加一个空标签,它将起作用: - )
答案 3 :(得分:0)
我可以报告这在ASP 4中仍然是个问题。非常讨厌。今天我发现这个问题是在同事向母版页添加自定义控件后导致所有LinkButtons的副作用悄然停止像链接或按钮一样。