我动态添加的模态弹出扩展程序无法找到目标控件ID。我正在使用母版页。
编辑:没有MasterPages,效果很好。
网络表单:
<asp:Content ID="Content3" ContentPlaceHolderID="cphContent" runat="server">
<a runat="server" href="javascript:void(0);" ID="btnVote">vote</a>
<asp:Panel ID="popScore" runat="server"></asp:Panel>
</asp:Content>
代码隐藏
protected void Page_Load(object sender, EventArgs e)
{
ModalPopupExtender mpeScore = new ModalPopupExtender()
{
ID = "mpeSc",
PopupControlID = popScore.ClientID,
TargetControlID = btnVote.ClientID,
BackgroundCssClass = "modalBackground",
BehaviorID = "mpeScore"
};
this.Controls.Add(mpeScore);
}
错误讯息是
'mpeSc'的TargetControlID不是 有效。带ID的控件 'ctl00_cphContent_btnVote'不能 被发现。
我也试过了btnVote.ID
。
答案 0 :(得分:0)
花了我几天时间来解决这个问题,但是在使用母版页或单独的UpdatePanels时你必须挂钩ResolveControlID事件
ModalPopupExtender mpeScore = new ModalPopupExtender()
{
ID = "mpeSc",
PopupControlID = popScore.ClientID,
CancelControlID = cancelVote.ClientID,
TargetControlID = btnVote.ID, //will note resolve, done in exception
BackgroundCssClass = "modalBackground",
BehaviorID = "mpeScore"
};
mpeScore.ResolveControlID += mpe_ResolveControlID;
this.Form.Controls.Add(mpeScore);
您可以对所有模态弹出窗口使用相同的处理程序,并像这样解析控件
protected void mpe_ResolveControlID(object sender, AjaxControlToolkit.ResolveControlEventArgs e)
{
switch (e.ControlID)
{
case "btnVote":
e.Control = btnVote;
break;
case "btnComDummy":
e.Control = btnComDummy;
break;
}
}
很高兴我可以帮助(我)。