在我的aspx移动页面中,当我向服务器发送ajax请求时出现此错误:
Sys.ArgumentTypeException: Object of type 'AjaxControlToolkit.ModalPopupBehavior' cannot be converted to type 'AjaxControlToolkit.ModalPopupBehavior'. Parameter name: instance
我不确切知道发生了什么,但我确定它与我的页面中的jquery相关,因为我检查此页面时没有包含jqm并且它正常工作。感谢
在asp页面中单击按钮时运行的行:
string message = "blahbalahblahblah...";
MessageBoxInfo.Show(MessageBox.MessageType.Error, message, 110, 350);
return;
在我的Control(MessageBox.ascx)中,我有:
<asp:LinkButton ID="LinkButtonTargetControl" runat="server"></asp:LinkButton>
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtenderMessage" runat="server" TargetControlID="LinkButtonTargetControl"
PopupControlID="MessageBox" OkControlID="ButtonOK" CancelControlID="CloseButton" BackgroundCssClass="messagemodalbackground" />
<asp:Panel ID="MessageBox" runat="server" style="display:none;">
<asp:HyperLink runat="server" id="CloseButton" >
<asp:Image ID="Image1" runat="server" ImageUrl="../images/Message/close.png" AlternateText="Close" />
</asp:HyperLink>
<p><asp:Literal ID="litMessage" runat="server"></asp:Literal></p>
</asp:Panel>
show方法如下(MessageBox.ascx.cs):
public void Show(MessageType messageType, string message, int height, int width)
{
CloseButton.Visible = ShowCloseButton;
litMessage.Text = message;
MessageBox.Height = height;
MessageBox.Width = width;
MessageBox.CssClass = messageType.ToString().ToLower();
ModalPopupExtenderMessage.Show();
this.Visible = true;
}
另外我应该提一下每次调用show方法以及其中的所有内容,例如width height ...设置正常,但是如果你在firebug中检查它,你会看到显示:还没有剩下!
答案 0 :(得分:0)
由于某种原因,运行时应该使用两个名为AjaxControlToolkit.ModalPopupBehavior
的不同程序集,假设AjaxControlToolkit.ModalPopupBehavior1
和AjaxControlToolkit.ModalPopupBehavior2
。
MessageBoxInfo
来自AjaxControlToolkit.ModalPopupBehavior1
和
MessageBox.MessageType
来自AjaxControlToolkit.ModalPopupBehavior2
因此MessageBoxInfo.Show(MessageBox.MessageType.Error, message, 110, 350);
会引发错误的转换错误。
如果您尝试其他Show()
覆盖,没有MessageBox.MessageType
,那么它是否正常?
真正的解决方案,如果你找不到reasom可能是使用反射的变通方法:
从运行时MessageBoxInfo
对象获取assemlby
并使用它来实例化MessageBox.MessageType
。