English 中文(简体)
链接按钮在自定义的网络控件中无法正确呈现。
原标题:
  • 时间:2009-03-08 10:52:08
  •  标签:

我有以下的设置。

Custom Control 1 - MyListControl - Nested Collection of - 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>

我没有收到任何错误消息,该控件确实被渲染,但是渲染的结果不正确。如果将上述代码放置在表单视图中,则链接按钮不会获得PostBack代码,整个渲染结果都会变得不正确。

<a id="LinkButton1">Edit</a>

有人知道这是为什么吗?链接按钮为什么不能像通常一样呈现?

TIA (翻译成中文是):TIA

安德鲁

最佳回答

对我来说,看起来像是ASP.Net中与LinkButton父级Controls集合中顺序有关的一个bug。

这个片段:

    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 是父级控件集合中的第一个。解决方法:在它之前添加一个空的标签,就可以工作了 :-)

问题回答

您是否在生成的HTML中遇到了某些ID名称冲突的问题?

控件应该具有 LinkButton1 的混淆版本名称,因为它在一个 Repeater 中?

我意识到这有点老旧,但我在我的情况下刚遇到了同样的问题并找到了解决方法。希望这能帮助其他遇到这个问题的人。

问题是我没有将LinkButton添加到我的服务器控件(LinkButton的父控件)的Controls集合中。我没有深入研究为什么这会导致问题。

祝你好运。

我可以报告ASP 4仍然存在这个问题。非常恼人。今天我发现这个问题,因为一位同事向主页面添加了自定义控件,导致所有LinkButton悄悄停止像链接或按钮那样工作。





相关问题
热门标签