EDIT Final:他の誰かがこの動作を見た場合に備えて、私は自分の回避策を説明したかった. 以下に説明する Web フォームのマスター ページでプレースホルダーを使用していました。マスター ページの 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 内で実行すると、以下で説明する方法で動作します。
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('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="" を取得しています。コードビハインドは、データソースを設定してバインドするだけで、他には何もありません。
ありがとうございました。