【问题标题】:FirstOrDefault() i'm getting a ArgumentNullExceptionFirstOrDefault() 我得到一个 ArgumentNullException
【发布时间】:2021-05-21 14:11:19
【问题描述】:

我收到 ArgumentNullException,但我不知道如何解决这个问题。 我试过 DefaultIfEmpty 但它仍然不起作用。

代码如下:

if (controller != "Home")
{
    var defaultActionForController = ((List<DefaultActionForControllers>)ViewBag.DefaultActionsForControllers).Where(s => s.Controller == controller).Select(s => s.Action).FirstOrDefault();
    if (controller == "ManagementObjects")
    {
        var controllerName = firstLayerNameSet;
        @:> @Html.ActionLink(firstLayerNameSet, defaultActionForController, controller)
    }
    else if (controller == "MangementCategories")
    {
        var controllerName = secondLayerNameSet;
        @:> @Html.ActionLink(secondLayerNameSet, defaultActionForController, controller)
    }
    else if (controller == "View")
    {
        @:> @Html.ActionLink(Resources.ResourceManager.GetString(controller), "", "")
    }
    else
    {
        @:> @Html.ActionLink(Resources.ResourceManager.GetString(controller), defaultActionForController, controller)
    }
}

这是错误:

3005 An unhandled exception has occurred.

ArgumentNullException
Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)
   at ASP._Page_Views_Shared__LoginPartial_cshtml.Execute() in d:\inetpub\wwwroot\TestMap\Views\Shared\_LoginPartial.cshtml:line 30
   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.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
   at ASP._Page_Views_Shared__TopNavbar_cshtml.Execute() in d:\inetpub\wwwroot\TestMap\Views\Shared\_TopNavbar.cshtml:line 13
   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.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
   at ASP._Page_Views_Shared__Layout_cshtml.Execute() in d:\inetpub\wwwroot\TestMap\Views\Shared\_Layout.cshtml:line 73
   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.WebPages.WebPageBase.<>c__DisplayClass40_0.<RenderPageCore>b__0(TextWriter writer)
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
   at System.Web.WebPages.WebPageBase.PopContext()
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar)
   at System.Web.HttpApplication.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar)

这是我的 DefauftActionForControllers 的代码:

using System.Collections.Generic;

namespace Heijligers.Mas.Web.Models
{
    public class DefaultActionForControllers
    {
        public string Controller { get; set; }

        public string Action { get; set; }
    }
}

我把代码改成了这个,但还是不行:

var defaultActionForController = ((List<DefaultActionForControllers>)ViewContext.Controller.ViewBag.DefaultActionForControllers).FirstOrDefault(s => s.Controller == controller).Action;

它仍然给了我一个 ArgumentNullException。 当我去调试时,它说 var defaultActionForController = null 在 ViewBag.DefaultActionsForControllers 中计数 12

如果这些信息有任何帮助,我想知道,但我想只是发布它你永远不知道

【问题讨论】:

  • 我怀疑它是 FirstOrDefault,而是它在哪里抛出。我的猜测是您的 ViewBag.DefaultActionsForControllers 为空
  • 您好,欢迎来到 SO。请发布整个异常堆栈,而不仅仅是错误,这样我们就可以了解它在什么地方发生了故障并为您提供帮助。

标签: asp.net asp.net-mvc exception error-handling argumentnullexception


【解决方案1】:

错误堆栈显示问题所在:

ArgumentNullException
Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)
   at ASP._Page_Views_Shared__LoginPartial_cshtml.Execute() in 
   d:\inetpub\wwwroot\TestMap\Views\Shared\_LoginPartial.cshtml:line 30
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()

Where 是一种扩展方法。因此,它在源上运行,错误告诉您source 参数是null

检查填充ViewBag.DefaultActionsForControllers 的代码。您需要在渲染视图之前设置控制器操作的值。

最后,您的方法调用可以简化为 FirstOrDefault 也允许使用谓词:

var defaultActionForController = ((List<DefaultActionForControllers>)ViewBag.DefaultActionsForControllers).FirstOrDefault(s => s.Controller == controller).Action;

【讨论】:

  • 嗨!,我改变了方法,它仍然给了我错误。另外,我发布了我的 DefaultActionForControllers 类。也许你可以在那里找到问题?
  • @Daniel 您没有在控制器中正确设置 ViewBag.DefaultActionsForControllers 的值,或者您在处理动态属性时遇到了 cAsE sEnSiTiViTy 问题。
  • @Daniel 请发布您的控制器代码。加载此局部视图时正在执行的相关操作的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多