2014-09-26 2 views
0

У меня есть форма, которая работает в течение длительного времени, и сегодня она терпит неудачу с моей базой данных UAT.Проблема с привязкой ASP.Net с разными данными

Вид:

<%@ Control /* ... */ %> 
<asp:Panel runat="server"> 

    <!-- Area not visible, list disabled --> 
    <asp:PlaceHolder runat="server" Visible='False'> 
     <asp:RadioButtonList runat='server' id='lstTradingSameAsRegistered' 
      AutoPostBack="True" Enabled="False" /> 
    </asp:PlaceHolder> 

    <asp:PlaceHolder runat="server" Visible='<%#!GetCurrentValue(IsTradingAddressSameAsRegistered , lstTradingSameAsRegistered)%>'> 
     <!-- ... --> 
    </asp:PlaceHolder> 

    <-- Area visible, list enabled --> 
    <asp:PlaceHolder runat="server" Visible='True'> 
     <asp:RadioButtonList runat='server' id='lstHeadOfficeSameAsRegisteredLabel' 
      AutoPostBack="True" Enabled="True" /> 
    </asp:PlaceHolder> 

    <asp:PlaceHolder runat="server" Visible='<%#!GetCurrentValue(IsHeadOfficeAddressSameAsRegistered , lstHeadOfficeSameAsRegistered)%>'> 
     <!-- ... --> 
    </asp:PlaceHolder> 

</asp:Panel> 

Code-за:

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 

    lstTradingSameAsRegistered.Items.Clear(); 
    lstTradingSameAsRegistered.Items.Add("Yes", "True"); 
    lstTradingSameAsRegistered.Items.Add("No", "False"); 

    lstHeadOfficeSameAsRegistered.Items.Clear(); 
    lstHeadOfficeSameAsRegistered.Items.Add("Yes", "True"); 
    lstHeadOfficeSameAsRegistered.Items.Add("No", "False"); 

    if (!IsPostBack) 
    { 
     lstTradingSameAsRegistered.SelectedIndex = IsTradingAddressSameAsRegistered ? 0 : 1; 
     lstHeadOfficeSameAsRegistered.SelectedIndex = IsHeadOfficeAddressSameAsRegistered ? 0 : 1; 
    } 
} 

public bool? GetCurrentValue(bool modelValue, ListControl control) 
{ 
    if (IsPostBack) 
    { 
     var result = Request.Form[control.UniqueID].TryParseAs<bool>(); 
     if (result.HasValue) 
      return result; 

     if (control.SelectedValue == "True") 
      return true; 

     if (control.SelectedValue == "False") 
      return false; 

     return null; 
    } 
    else return modelValue; 
} 

На Dev + Живой базы данных код работает отлично, но на ЕСХН я получаю NullReferenceException после вызова GetCurrentValue() на a PostBack.

Когда я выбираю новый пункт в lstHeadOfficeSameAsRegisteredLabel, PostBack событие возникает и с точки зрения выбранный элемент из двух RadioButtonList являются null.

Исходный код проекта тот же, во время моих тестов я меняю путь базы данных в файле конфигурации. При отладке страницы я не получаю никаких других ошибок.

Поскольку это только привязка (я думаю), что может быть проблемой и как ее исправить?

+0

Убедитесь, что у вас одинаковые данные в обеих БД. Возможно, некоторые данные отсутствуют. – Mairaj

+0

За исключением ID-данных для этой конкретной страницы. Если бы некоторые данные были, я должен получить другое сообщение об ошибке и должен произойти в моем слое данных. Вместо этого мой «RadioButtonList», содержащий статические данные, не привязан. – glautrou

+0

Ну, я не вижу никакого доступа к данным здесь. Вам, кажется, не хватает кода - можете ли вы обновить свой вопрос и предоставить код для 'IsTradingAddressSameAsRegistered' и' IsHeadOfficeAddressSameAsRegistered' (они выглядят как свойства, возможно, именно здесь происходит некоторый доступ к данным?) – sh1rts

ответ

0

Проблема возникла из рамки. У меня есть обычай DateTime' class in my application created to avoid to change the server date, and when this date is setted to the future that breaks the .Net binding in some parts of my application. I don't have the entire source code of the framework so I cannot investigate more, but setting my custom date the same value as DateTime` исправляет проблему.

Смежные вопросы