序列不包含元素,即使它包含

问题描述

我有一个 IEnumerable<SelectListItem> Runs,但它在我的视野中抛出了 Sequence contains no elements。 我添加一个 DefautIfEmpty() 来防止这种情况:

 var defaultListItemRow = table.NewRow();
            defaultListItemRow["description"] = "Er zijn geen runs beschikbaar om te kiezen";
            defaultListItemRow["runguid"] = Guid.Empty;

            model.Runs =
            from row in table.AsEnumerable().DefaultIfEmpty(defaultListItemRow)
            select new SelectListItem
            {
                Selected = false,Text = row["description"].ToString(),Value = row["runguid"].ToString()
            };

在视图中,我使用 HTMLHelper 创建自定义下拉列表:

  @Html.FabricDropDownListFor(model => model.Runs,Model.Runs,htmlAttributes: new { @class = "ms-Dropdown-select",@style = "width: 100px;" },label: "Billing-run",choosetext: "Selecteer een run...")

这包含一个非空的 MvcHtmlString 并包含认项。

enter image description here

就像您在打印屏幕中看到的那样,Model.Runs.Max() 返回一个符合预期的 SelectListItem。 但它仍然抛出 Sequence contains no elements 和以下堆栈跟踪:

   at System.Linq.Enumerable.Max[TSource](IEnumerable`1 source)
   at System.Linq.Enumerable.Max[TSource,TResult](IEnumerable`1 source,Func`2 selector)
   at ASP._Page_Views_Cloudbilling_VPS_Overzicht_cshtml.Execute() in D:\home\site\wwwroot\Views\Cloudbilling\VPS_Overzicht.cshtml:line 21
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext,Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult)

我没有想法,谁有想法?

解决方法

在带有 Max 异常的视图中,您使用的是不同的模型属性:

Model.CustomerRuns

默认回退项应用于 Model.Runs 属性。

除此之外,Max 会选择您未在默认项中初始化的 RunDate