最终编辑:以防其他人看到这种行为,我想解释一下我的工作。我在我的母版页上为下面描述的webform使用了一个占位符。我向母版页OnInit事件中的占位符添加了一个服务器控件。通过消除过程,我发现下面描述的行为只有在我将此服务器控件添加到母版页时才会发生。
titlebarPlaceHolder.Controls.Add(sctitlebar)
我重写了母版页,不需要添加服务器控件,并且下面描述的行为消失了。我不知道是什么引起的。这是一个简单的服务器控件,但这是我的工作。
编辑2:当容器是中继器控件中的表时,也会发生相同的行为:
<asp:Repeater ID="rptAuditList" runat="server">
<ItemTemplate>
<tr class="odd">
<td><asp:LinkButton ID="lnkOpenAudit" runat="server" Text='<%# Eval("auditname") %>'></asp:LinkButton> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
以下是HTML输出:
<td><a href="" id="contentMain_rptAuditList_lnkOpenAudit_0" href="javascript:__doPostBack('ctl00$contentMain$rptAuditList$ctl00$lnkOpenAudit','')">Demo PreClose July 2012</a> </td>
编辑:在我的测试中,我注意到如果我在MasterPage外部运行extact相同的控件,它可以正常工作,但是如果我在MasterPage内部运行它,它的行为方式如下所述。
我已经用转发器、DataList和Listview尝试过了,结果总是一样的。
下面是HTML:
<asp:ListView ID="lvwAuditList" runat="server" >
<LayoutTemplate>
<ul><li runat="server" id="itemPlaceholder"></li></ul>
</LayoutTemplate>
<ItemTemplate>
<li><asp:LinkButton ID="lnkAudit" runat="server" Text='<%# Eval("auditname") %>' >
</asp:LinkButton></li>
</ItemTemplate>
</asp:ListView>
下面是输出:
<ul>
<li><a href="" id="contentMain_lvwAuditList_lnkAudit_0" href="javascript:__doPostBack('ctl00$contentMain$lvwAuditList$ctrl0$lnkAudit','')">Demo PreClose July 2012</a></li>
<li><a id="contentMain_lvwAuditList_lnkAudit_1" href="javascript:__doPostBack('ctl00$contentMain$lvwAuditList$ctrl1$lnkAudit','')">Demo PostClose Audit June 2012</a></li>
</ul>
第一行总是添加了额外的href="“。我以前从未见过这种行为。我已经把html和代码去掉了,只剩下最基本的部分,但我还是得到了这个额外的href="“。后面的代码只是设置数据源并绑定它,没有其他东西。
谢谢。
发布于 2013-04-09 22:04:45
如果您使用第一个list标记作为占位符,并替换后面代码中的内容,我将使用一种稍微不同的方法,在list标记内添加一个ASP.NET placeholder,如下所示:
<ul><li><asp:PlaceHolder runat="server" ID="itemPlaceholder" /></li></ul>
在使用ASP.NET标记时,我遇到了一些在响应代码中出现的不寻常的伪像。这很可能也会导致你的问题!
https://stackoverflow.com/questions/15908257
复制相似问题