Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有不同数据的ASP.Net绑定问题_C#_Asp.net_Binding_Webforms - Fatal编程技术网

C# 具有不同数据的ASP.Net绑定问题

C# 具有不同数据的ASP.Net绑定问题,c#,asp.net,binding,webforms,C#,Asp.net,Binding,Webforms,我有一个表格,已经工作了很长时间,今天只是我的UAT数据库失败 查看: <%@ Control /* ... */ %> <asp:Panel runat="server"> <!-- Area not visible, list disabled --> <asp:PlaceHolder runat="server" Visible='False'> <asp:RadioButtonList runat='serv

我有一个表格,已经工作了很长时间,今天只是我的UAT数据库失败

查看:

<%@ 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>
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;
}

代码隐藏:

<%@ 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>
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;
}
protected override void OnInit(事件参数e)
{
碱基.奥尼特(e);
lsttrandingsameasregistered.Items.Clear();
lstradingsameasregistered.Items.Add(“是”、“正确”);
lstradingsameasregistered.Items.Add(“否”、“假”);
lsHeadOfficeSameasRegistered.Items.Clear();
lsheadofficesameasregistered.Items.Add(“是”、“正确”);
lsheadofficesameasregistered.Items.Add(“否”、“假”);
如果(!IsPostBack)
{
LstradingSameasRegistered.SelectedIndex=IsTradingAddressSameAsRegistered?0:1;
lsHeadOfficeSameasRegistered.SelectedIndex=IShadofficeAddressSameasRegistered?0:1;
}
}
公共场所?GetCurrentValue(布尔模型值,列表控件)
{
如果(iPostBack)
{
var result=Request.Form[control.UniqueID].TryParseAs();
if(result.HasValue)
返回结果;
如果(control.SelectedValue==“True”)
返回true;
如果(control.SelectedValue==“False”)
返回false;
返回null;
}
否则返回模型值;
}
在Dev+Live数据库上,代码工作正常,但在UAT上,我在
回发上调用
GetCurrentValue()
后得到
NullReferenceException

当我在
lsHeadOfficeSameasRegisteredLabel
中选择一个新项目时,将引发
PostBack
事件,并且在视图中,两个
RadioButtonList
中的所选项目为
null

项目的源代码是相同的,在测试期间,我只更改配置文件中的数据库路径。调试页面时,我没有收到任何其他错误


由于这只是绑定(我猜),可能会出现什么问题以及如何解决它?

问题来自一个框架。我在我的应用程序中创建了一个自定义的
DateTime'类,以避免更改服务器日期,当这个日期设置为将来时,会破坏应用程序某些部分中的.Net绑定。

我没有框架的全部源代码,因此无法进行更多调查,但将自定义日期设置为与
DateTime`相同的值可以解决问题。

确保两个数据库中的数据相同。可能缺少一些数据。除了此特定页面的IDs数据相同之外。如果某些数据被删除,我会收到不同的错误消息,并且应该发生在我的数据层中。相反,我的包含静态数据的
RadioButtonList
没有绑定。我看不到任何数据访问正在进行。您似乎缺少一些代码-您是否可以更新您的问题并提供
IsTradingAddressSameAsRegistered
IShadofficeAddressSameasRegistered
(这些看起来像属性,可能这就是发生某些数据访问的地方?)的代码?此外,您的OnInit看起来很奇怪。没有使用两个字符串参数的RadioButtonList.Items.Add重载。某处有扩展方法吗?是的,那是一种扩展。我发现,只有当变量设置为未来(类似于
DateTime
class,允许在不更改服务器日期的情况下设置自定义日期)时,问题才会发生。我不明白问题的原因,我必须找到一个解决办法,让我的客户测试发票。有什么想法吗?