0

__doPostBackこの LinkBut​​ton の WebForms で行う必要があります。

<asp:LinkButton ID="AggiungiSocial" runat="server" onclick="cmdAggregaSocial_Click">Link</asp:LinkButton> 

.NET が次のように処理していることがわかります。

javascript:__doPostBack('ctl00$ContentPlaceHolder1$Dashboard1$RepeaterSocials$ctl00$AggiungiSocial','')

だから私が必要なのはjavascript:__doPostBack('ctl00$ContentPlaceHolder1$Dashboard1$RepeaterSocials$ctl00$AggiungiSocial','').

しかし、レンダリングされたIDは代わりにContentPlaceHolder1_Dashboard1_RepeaterSocials_AggiungiSocial_0

それで、そのIDのjavascript置換/解析を行う必要がありますか、またはこの「__dopostback」UserControl IDを取得する方法はありますか?

そのような:

var ServerIDUserControl = link.attr('href').replace("javascript:__doPostBack(", "").replace("','')", "");

(これはひどいものです)。

4

2 に答える 2

1

(おそらく、使用している (ASP).NET のバージョンによって異なります)属性値には、識別子を使いやすくnameするのではなく、探している文字列が含まれます。idここで作業中の 3.5 サイトの例は、次のようになりますButton

<input type="submit" 
  name="ctl00$cph_main$ctl00$PerformSearch"
  id="ctl00_cph_main_ctl00_PerformSearch">

いつ/なぜこれが起こったのかについての無知を認めなければならないという理由だけで、最初の部分を括弧で囲みます-そうではなかったときのことを思い出します.3.5以降のものか、構成されたものである可能性があります.

それ以外の場合は、インラインのサーバー側スクリプト構文を使用しcontrol.UniqueIDて、適切な場所に出力することができます。

于 2013-09-20T10:13:43.267 に答える
0

ポストバック中に送信されたコントロールの ID を取得するには、 のプロパティ__EVENTTARGETを使用する必要があります。あなたの場合:UniqueIDControl

javascript:__doPostBack('<%= AggiungiSocial.UniqueID %>', '');

ただし、あなたの例から、コントロールが というリピーター内にネストされていることがわかりますRepeaterSocials。この場合、コードは次のようになります。

javascript:__doPostBack('<%= RepeaterSocials.Items[0].FindControl("AggiungiSocial").UniqueID %>', '');

しかし、私のアドバイスは、このアプローチを使用しないことです。代わりに、 Repeater.ItemCommandイベントをキャプチャして、リピーター内でクリックされたボタンを確認できます。

于 2013-09-20T10:26:07.347 に答える