저는 UpdatePanel, Repeater 및 ObjectDataSource를 사용하는 응용 프로그램을 개발했습니다. 그때 내가 같은 오류가 발생하고,이 세 가지를 사용 할 때UpdatePanel Repeater ObjectDataSource 오류가 발생했습니다.
문제는 "Sys.WebForms.PageRequestManagerServerErrorException : 호출 대상이 예외가 throw되었습니다."
IE8에서 내 로컬 컴퓨터가 잘 작동하지만 IE에서 응용 프로그램을 호스팅 할 때 IE8이 모든 브라우저가 정상적으로 작동하는 모든 브라우저를 리팩팅하는 문제를 만들었습니다.
내 Qfx.Bases.data.DataManager 클래스에서 내 InstrumentSelectionBox.ascx 제어
에서 언급 한 코드 위에
<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>
아래에 언급 된 코드
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>();
}
및 I 업데이트 판에서 이것을 사용했습니다.
<asp:UpdatePanel ID="upTab" runat="server">
<ContentTemplate>
<uc:InstrumentSelectionBoxrunat="server" ID="UTCInstrumentSelectionBox"></uc:InstrumentSelectionBoxrunat>
</ContentTemplate>
</asp:UpdatePanel>
브라우저 콘솔에서 일부 디버깅을 한 후 ObjectDataSource로 인해 오류가 발생하여 ObjectDataSource를 제거하고 ID가있는 일반 리피터를 바인딩 한 다음 IE8에서 정상적으로 작동합니다.
그래서 누구나 plese가 IE8에서 ObjectDataSource를 사용하거나 코드에 오류가있는 경우 제한이 있음을 알 수 있습니다. 귀하의 회중은 매우 만족해야합니다. 감사합니다.
응용 프로그램을 테스트 한 결과 Internet Explorer 8에서만 메타 태그를 추가해야합니다. –
메소드를 디버깅 했습니까? 호출하는 곳 어디에도 예외/호출이 없습니다. –
예 디버그가 있고 한 곳에서 다른 브라우저에서 가져 오는 동안 개체 참조가 IE8의 개체 인스턴스로 설정되지 않은 것과 같은 오류가 발생했습니다. –