ASP.NET MasterPage中的Linkbutton和子Webform数据控件创建额外的href =""

时间:2013-04-09 17:14:34

标签: asp.net master-pages repeater href linkbutton

EDIT Final:为了防止其他人看到这种行为,我想解释一下我的工作。我在我的母版页面上使用了占位符,用于下面描述的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(&#39;ctl00$contentMain$rptAuditList$ctl00$lnkOpenAudit&#39;,&#39;&#39;)">Demo PreClose July 2012</a> </td>
编辑:在我的测试中,我注意到如果我运行与MasterPage相同的控件OUTSIDE,它可以正常工作,但是如果我在MasterPage中运行它,它的行为方式如下所述。

我尝试使用Repeater,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(&#39;ctl00$contentMain$lvwAuditList$ctrl0$lnkAudit&#39;,&#39;&#39;)">Demo PreClose July 2012</a></li>
 <li><a id="contentMain_lvwAuditList_lnkAudit_1" href="javascript:__doPostBack(&#39;ctl00$contentMain$lvwAuditList$ctrl1$lnkAudit&#39;,&#39;&#39;)">Demo PostClose Audit June 2012</a></li>
 </ul>

第一行总是添加额外的href =“”。我以前从未见过这种行为。我已经删除了最基本的html和代码,但我还是得到了额外的href =“”。后面的代码只是设置数据源并绑定它,没有别的。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您使用第一个列表标记作为占位符并替换后面代码中的内容,我将使用稍微不同的方法在list标记内添加ASP.NET PlaceHolder,如下所示:

<ul><li><asp:PlaceHolder runat="server" ID="itemPlaceholder" /></li></ul>

在使用ASP.NET标记时,我遇到了一些不常见的伪像,这些标记并非特别适合。这也可能导致你的问题!