У меня есть форма, которая работает в течение длительного времени, и сегодня она терпит неудачу с моей базой данных 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
.
Исходный код проекта тот же, во время моих тестов я меняю путь базы данных в файле конфигурации. При отладке страницы я не получаю никаких других ошибок.
Поскольку это только привязка (я думаю), что может быть проблемой и как ее исправить?
Убедитесь, что у вас одинаковые данные в обеих БД. Возможно, некоторые данные отсутствуют. – Mairaj
За исключением ID-данных для этой конкретной страницы. Если бы некоторые данные были, я должен получить другое сообщение об ошибке и должен произойти в моем слое данных. Вместо этого мой «RadioButtonList», содержащий статические данные, не привязан. – glautrou
Ну, я не вижу никакого доступа к данным здесь. Вам, кажется, не хватает кода - можете ли вы обновить свой вопрос и предоставить код для 'IsTradingAddressSameAsRegistered' и' IsHeadOfficeAddressSameAsRegistered' (они выглядят как свойства, возможно, именно здесь происходит некоторый доступ к данным?) – sh1rts