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”用户控件 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需要使用UniqueID. Control在你的情况下:

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

但是,从您的示例中,我看到您的控件嵌套在名为RepeaterSocials. 在这种情况下,您的代码可能如下所示:

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

但我的建议是不要使用这种方法。您可以改为捕获Repeater.ItemCommand事件并查看在中继器内单击了哪个按钮。

于 2013-09-20T10:26:07.347 回答