1

UpdatePanel、Repeater、および ObjectDataSource を使用したアプリケーションを開発しました。

問題は、この 3 つを使用していたときに、 「Sys.WebForms.PageRequestManagerServerErrorException: 呼び出しのターゲットによって例外がスローされました」のようなエラーが発生することです。

問題はIE8でのみ発生し、ローカルでは咳をしません.IE8のローカルマシンは正常に動作していますが、IISでアプリケーションをホストすると、IE8はすべてのブラウザが正常に動作する問題を作成しました.

下記のコード

<asp:HiddenField runat="server" ID="hdnKey" Value="mainAlt" />

        <qfx:label runat="server" ID="Label1" CssClass="subHeading" Text="term_Shares"></qfx:label>
        <asp:Repeater ID="rptShareTypeList"  runat="server">
            <HeaderTemplate>
            </HeaderTemplate>
            <ItemTemplate>
                <div class="shareItem">
                <span class="shareItemButton"></span>
                <span class="shareItemLabel">
                <%#IRAppMgr.Translate(Convert.ToString(Eval("title"))) %>
                <input style="display: none" class="ShareTypeCheckBox" type="checkbox" name='<%#  Eval("key")  %>' value="<%#Eval("Code") %>" <%# Eval("checked12") %> />
                <input class="ShareColor" type="hidden" value="<%#Eval("Color") %>" />
                <input class="ShareCurrency" type="hidden" value="<%#Eval("Currency") %>" />
                </span>
                </div>
            </ItemTemplate>
            <FooterTemplate></FooterTemplate>
        </asp:Repeater>
       <asp:ObjectDataSource ID="SharesTypeDS" runat="server" DataObjectTypeName="Qfx.DataClasses.Config.Option"
            SelectMethod="SelectShareType" TypeName="Qfx.Bases.data.DataManager">
            <SelectParameters>
                <asp:ControlParameter ControlID="ClientMarker" Name="appConfig" PropertyName="Config"
                    Type="Object" />
                <asp:ControlParameter ControlID="ClientMarker" Name="client" PropertyName="Client" />
                <asp:Parameter Name="selection" DefaultValue="ShareType" />
            </SelectParameters>
        </asp:ObjectDataSource>

私のInstrumentSelectionBox.ascxコントロールの上記のコード

私の Qfx.Bases.data.DataManager クラスで

public List<Option> SelectShareType(object appConfig, string client, string selection, string ShareKey)
    {
        AppConfig config = (AppConfig)appConfig;
        List<Option> Options = null;
        if (config.getSelectionByKey(ShareKey + selection) != null)
            Options = config.getSelectionByKey(ShareKey + selection).Options;
        if (Options != null && Options.Count > 0)
        {
            foreach (Option option in Options)
            {
                if (option.Currency == null && IRAppManager.Manager != null)
                {
                    DataClasses.Share.Instrument inst = IRAppManager.Manager.GetInstrument(option.Key);
                    option.Currency = (inst != null) ? IRAppManager.Manager.Translate(inst.Currency) : "";
                }
                if (option.VolumeDivisor == null || option.VolumeDivisor.Trim() == string.Empty)
                    option.VolumeDivisor = option.VolumeValue;
                option.Code = (config.GetDataSourceByKey(option.Key) != null) ? config.GetDataSourceByKey(option.Key).Code : "";
                if (option.Code != string.Empty)
                {
                    option.TimeStamp = GetTimeStampDetail(option.Code);
                }
            }
        }
        return (config.getSelectionByKey(ShareKey + selection) != null) ? config.getSelectionByKey(ShareKey + selection).Options : new List<Option>();
    }

Updatepanelでそれを使用しました

<asp:UpdatePanel ID="upTab" runat="server">
                <ContentTemplate>
                    <uc:InstrumentSelectionBoxrunat="server" ID="UTCInstrumentSelectionBox"></uc:InstrumentSelectionBoxrunat>
                </ContentTemplate>
            </asp:UpdatePanel>

ブラウザコンソールでデバッグした後、ObjectDataSource が原因でエラーが発生したと思ったので、ObjectDataSource を削除し、通常のリピーターを Id にバインドしてから、IE8 で正常に動作しています。

ObjectDataSource を使用しているときに IE8 に制限があるか、コードにエラーがあるかどうかを教えてください。あなたの応答は高く評価されるべきです。ありがとう

4

1 に答える 1

1

ObjectDataSourceは、関数/メソッドを呼び出すためにリフレクションを使用します。特別な場合のメソッドが例外を与えている可能性があります。これが参照スレッドです。メソッドを調べてデバッグしてください。

于 2014-04-22T06:29:12.693 に答える