链接按钮无法在自定义Web控件中正确呈现

时间:2009-03-08 10:52:08

标签: asp.net

我有以下设置

自定义控件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

安德鲁

4 个答案:

答案 0 :(得分:0)

您是否在生成的html上的其他位置发生了某些ID名称冲突?

控件应该有一个受损版本的LinkBut​​ton1名称,因为它在转发器中?

答案 1 :(得分:0)

我意识到这有点偏旧,但我遇到了同样的问题并在我的情况下修复了它。希望这有助于在这个问题上发生的其他人。

我的问题是我没有将LinkBut​​ton添加到我的服务器控件的Control集合(LinkBut​​ton的父控件)。我没有深入研究导致这个问题的具体原因。

祝你好运。

答案 2 :(得分:0)

对我而言,看起来像ASP.Net中的一个错误,它与其父控件集合中的LinkBut​​ton顺序有关。

此片段:

    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>

但是这个片段(只是颠倒了我在上面添加控件的顺序,所以LinkBut​​ton是第一个):

    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);
    }

不显示任何控制!!!

问题似乎是LinkBut​​ton是父控件集合中的第一个。解决方法:在它之前添加一个空标签,它将起作用: - )

答案 3 :(得分:0)

我可以报告这在ASP 4中仍然是个问题。非常讨厌。今天我发现这个问题是在同事向母版页添加自定义控件后导致所有LinkBut​​tons的副作用悄然停止像链接或按钮一样。