元素null错误

时间:2011-05-13 22:30:29

标签: asp.net

我收到此错误,不确定原因。请帮忙,这很紧急。

更新

if (flights.Count() >= 1)
        {
            int count = flights.Count();
            lblNumResults.Text = count.ToString();
            gvAvailableFlights.DataSource = flights;
            gvAvailableFlights.DataBind();
        }
  '/ WebSite3'中的

服务器错误   应用。值不能为空。   参数名称:element描述:   在此期间发生了未处理的异常   当前网络的执行   请求。请查看堆栈跟踪   有关错误的更多信息   它起源于代码。

     

异常详细信息:   System.ArgumentNullException:Value   不能为空。参数名称:   元件

     

来源错误:

     

生成此内容的源代码   未处理的异常只能显示   在调试模式下编译时。启用   这个,请按照以下其中一个   步骤,然后请求URL:

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

         

    <%@ Page Language =“C#”Debug =“true”   %GT;

  2.         

    或:

         

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

         

                  

         

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

         

    重要:在中运行应用程序   调试模式确实会产生一个问题   内存/性能开销。您   应该确保申请   以前调试已禁用   部署到生产场景中。

         

    堆栈追踪:

         

    [ArgumentNullException:值不能   是空的。参数名称:element]
      System.Xml.Linq.XElement.op_Explicit(的XElement   元素)+116474
      searchresult.b__1d(的XElement   f)+64
      System.Linq.WhereSelectEnumerableIterator 2.MoveNext() +151 System.Linq.Enumerable.Count(IEnumerable 1   来源)+201
      searchresult.FillAvailableFlightsGridView()   +721 searchresult.Page_Load(Object sender,EventArgs e)+37
      错误帮助(IntPtr的   fp,Object o,Object t,EventArgs e)   +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object   发件人,EventArgs e)+35
      System.Web.UI.Control.OnLoad(EventArgs的   e)+91
      System.Web.UI.Control.LoadRecursive()   +74 System.Web.UI.Page.ProcessRequestMain(布尔值   includeStagesBeforeAsyncPoint,Boolean   includeStagesAfterAsyncPoint)+2207

         

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

2 个答案:

答案 0 :(得分:2)

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

在调用Count()之前检查它是否为空,在这种情况下,假设零长度或做任何你想要的处理。

例如:

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()两次,因为您看到它包含的内部代码可能很重。

答案 1 :(得分:0)

改变这个:

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();
    }