Asp.net 为什么我得到这个元素空错误?

Asp.net 为什么我得到这个元素空错误?,asp.net,Asp.net,我得到了这个错误,不知道为什么。请帮忙,这很紧急 更新 if (flights.Count() >= 1) { int count = flights.Count(); lblNumResults.Text = count.ToString(); gvAvailableFlights.DataSource = flights; gvAvailableFlights.DataBin

我得到了这个错误,不知道为什么。请帮忙,这很紧急

更新

if (flights.Count() >= 1)
        {
            int count = flights.Count();
            lblNumResults.Text = count.ToString();
            gvAvailableFlights.DataSource = flights;
            gvAvailableFlights.DataBind();
        }
“/WebSite3”中的服务器错误 应用值不能为null。 参数名称:元素描述: 期间发生未处理的异常 当前web的执行 要求请查看堆栈跟踪 有关错误的详细信息,请参见 以及它在代码中的起源

例外情况详情: System.ArgumentNullException:值 不能为空。参数名称: 元素

源错误:

生成此文件的源代码 只能显示未处理的异常 在调试模式下编译时。使能 这个,请按照下面的一个 步骤,然后请求URL:

  • 在生成代码的文件顶部添加“Debug=true”指令 错误。例如:

  • 或:

    2) 将以下部分添加到 您的服务器的配置文件 应用程序:

    请注意,第二种技术将 导致给定范围内的所有文件 要在调试中编译的应用程序 模式第一种技术会导致 只有那个特定的文件是 在调试模式下编译

    重要提示:在中运行应用程序 调试模式会导致错误 内存/性能开销。你 应该确保应用程序 以前已禁用调试 部署到生产场景中

    堆栈跟踪:

    [ArgumentNullException:值不能为空 不能为空。参数名称:元素]
    System.Xml.Linq.XElement.op_Explicit(XElement 元素)+116474
    searchresult.b_uu1d(XElement f) +64
    System.Linq.WhereSelectEnumerableIterator
    2.MoveNext()
    +151系统Linq.可枚举计数(IEnumerable
    1 来源)+201
    searchresult.FillAvailableFlaghtsGridView() +721搜索结果。页面加载(对象发送者,事件参数)+37
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp、对象o、对象t、事件参数e) +14 System.Web.Util.CallEventHandlerDelegateProxy.Callback(对象 发送方,事件参数e)+35
    System.Web.UI.Control.OnLoad(EventArgs e) +91
    System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint)+2207

    版本信息:Microsoft.NET 框架版本:4.0.30319;ASP.NET 版本:4.0.30319.1


    在代码中,有一个名为
    FillAvailableFlightsGridView
    的函数,在该函数中,调用某个空集合的
    Count()

    在调用
    Count()
    之前,请检查它是否为null,在这种情况下,假定长度为零或执行任何您想要的处理

    例如:

    int myCount = 0;
    if (myCollection != null)
       myCount = myCollection.Count();
    
    编辑:在您的情况下,优化的代码将是:

    int flightsCount = (flights == null) ? 0 : flights.Count();
    if (flightsCount >= 1)
    {
        lblNumResults.Text = flightsCount.ToString();
        gvAvailableFlights.DataSource = flights;
        gvAvailableFlights.DataBind();
    }
    
    无需调用
    Count()
    两次,因为它包含可能很重的内部代码。

    更改此选项:

    if (flights.Count() >= 1)
            {
                int count = flights.Count();
                lblNumResults.Text = count.ToString();
                gvAvailableFlights.DataSource = flights;
                gvAvailableFlights.DataBind();
            }
    
    为此:

     if (flights != null && flights.Count() >= 1)
        {
            lblNumResults.Text = (string)flights.Count();
            gvAvailableFlights.DataSource = flights;
            gvAvailableFlights.DataBind();
        }
    

    15个问题,你还没有学会如何格式化你的帖子?如果你需要帮助,你必须给我们一些实际的代码。还请注意,发布.NET错误消息和堆栈跟踪不符合问题要求。尽管如此,如果正确,您正在尝试对空对象调用
    .Count()
    ,从而导致错误。我有两个正在测试的XML文件,旧文件(包含较少的航班)似乎可以工作,而新文件则无法工作。奇怪的是,当我使用旧的xml运行该文件时,新的航班显示在下拉列表中。