1

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(&#39;ctl00$contentMain$rptAuditList$ctl00$lnkOpenAudit&#39;,&#39;&#39;)">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(&#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="" を取得しています。コードビハインドは、データソースを設定してバインドするだけで、他には何もありません。

ありがとうございました。

4

1 に答える 1

0

最初のリスト タグをプレースホルダーとして使用し、コード ビハインドのコンテンツを置き換える場合、次のようにリスト タグ内に ASP.NET PlaceHolder を追加する少し異なるアプローチを使用します。

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

特に意図していない方法で ASP.NET タグを使用すると、応答コードに異常なアーティファクトが表示されることがあります。これもあなたの問題を引き起こしている可能性があります!

于 2013-04-09T22:04:44.913 に答える