2012-10-01 55 views
0

在我的aspx移動網頁時,我發出一個Ajax請求到服務器,我得到這個錯誤:阿賈克斯模式彈出擴展和JQM

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; 

在我的控制(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>  

而且表演方法如下(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方法每次調用時,它的一切內容如寬度高度...設置好,但如果你在螢火蟲中檢查它,你會看到顯示:沒有任何東西仍然存在!

+0

請添加一些代碼行更多..你如何得到ModalPopupExtenderMessage? –

+0

我剛更新了我的帖子。看看花花公子 –

回答

0

出於某種原因,運行時應該使用兩個不同的程序集,稱爲AjaxControlToolkit.ModalPopupBehavior,比如說AjaxControlToolkit.ModalPopupBehavior1AjaxControlToolkit.ModalPopupBehavior2

MessageBoxInfoAjaxControlToolkit.ModalPopupBehavior1
MessageBox.MessageType來從AjaxControlToolkit.ModalPopupBehavior2

來臨所以MessageBoxInfo.Show(MessageBox.MessageType.Error, message, 110, 350);拋出一個假的轉換錯誤。

如果您嘗試另一個Show()覆蓋,而沒有MessageBox.MessageType它的作品,是否正確?

真正的解決方案,如果你不能找到reasom可能是一種解決方法使用反射: 使用它來實例化一個MessageBox.MessageTypeMessageBoxInfo對象
在運行時獲取的assemlby。

+0

謝謝你的回覆,但我完全不理解你的意思。沒有類型的show()方法是不可接受的! –

+0

@MattStone對不起! MessageBoxInfo從哪裏來? –

+0

首先我在頁面中註冊控件'<%@ Register Src =「../ controls/MyMessageBox.ascx」TagName =「MyMessageBox」TagPrefix =「uc2」%>'然後我在updatePanel中添加了' ' –