0

サーバーにajaxリクエストを送信したときにaspxモバイルページで次のエラーが発生しました:

Sys.ArgumentTypeException: Object of type 'AjaxControlToolkit.ModalPopupBehavior' cannot  be converted to type 'AjaxControlToolkit.ModalPopupBehavior'. Parameter name: instance

何が起こったのか正確にはわかりませんが、jqmを含めずにこのページをチェックすると正しく動作するため、ページにあるjqueryに関連していると確信しています。ありがとう

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>      

そして、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 メソッドが毎回呼び出され、幅、高さなど、その中のすべてが呼び出されることに言及する必要があります。

4

1 に答える 1

0

何らかの理由で、ランタイムは と呼ばれる 2 つの異なるアセンブリを使用することになってAjaxControlToolkit.ModalPopupBehaviorAjaxControlToolkit.ModalPopupBehavior1ますAjaxControlToolkit.ModalPopupBehavior2

MessageBoxInfoから来て、からAjaxControlToolkit.ModalPopupBehavior1
MessageBox.MessageTypeていますAjaxControlToolkit.ModalPopupBehavior2

したがって、MessageBoxInfo.Show(MessageBox.MessageType.Error, message, 110, 350);偽の変換エラーがスローされます。

Show()別のオーバーライドを試しMessageBox.MessageTypeてもうまくいかない場合、本当ですか?

本当の解決策は、リアサムが見つからない場合、リフレクションを使用した回避策になる可能性があり ます。実行時にオブジェクトからassemlbyを取得し、MessageBoxInfo
それ を使用してMessageBox.MessageType.

于 2012-10-01T11:27:33.853 に答える