非静态方法需要目标

我有一个控制器操作,该操作在Firefox本地和生产环境中以及本地IE上均能正常运行,但在生产环境中却无法正常运行。这是我的控制器动作:


public ActionResult MNPurchase()

{

    CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];


    decimal OP = landTitleUnitOfWork.Sales.Find()

        .Where(x => x.Min >= calculationViewModel.SalesPrice)

        .FirstOrDefault()

        .OP;


    decimal MP = landTitleUnitOfWork.Sales.Find()

        .Where(x => x.Min >= calculationViewModel.MortgageAmount)

        .FirstOrDefault()

        .MP;


    calculationViewModel.LoanAmount = (OP + 100) - MP;

    calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850);


    return View(calculationViewModel);

}

这是我在IE中获得的堆栈跟踪:


错误。处理您的请求时发生错误。System.Reflection.TargetException:非静态方法需要一个目标。在System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)在System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags invokeAttr,活页夹活页夹,Object []参数,CultureInfo文化)在System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr,活页夹活页夹,Object []参数,CultureInfo文化),位于System.Reflection.RuntimePropertyInfo.GetValue(Object obj,Object []索引),位于System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression我,对象实例, System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression,1 forMergeOption) 

  at System.Data.Objects.ObjectQuery1.GetResults(可空1 forMergeOption) at 

  System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable.GetEnumerator()在System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable的1 source) at 

  System.Linq.Queryable.FirstOrDefault[TSource](IQueryable1源)在LandTitle.Controllers.HomeController.MNRefi()在lambda_method(封闭,ControllerBase ,Object []),位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary2 parameters) at 

  System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext 

HUWWW
浏览 989回答 3
3回答

潇潇雨雨

我认为当您在运行时为空引用的lambda中使用变量时,会发生此令人困惑的异常。在您的情况下,我将检查您的变量CalculationViewModel是否为空引用。就像是:public ActionResult MNPurchase(){    CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"];    if (calculationViewModel != null)    {        decimal OP = landTitleUnitOfWork.Sales.Find()            .Where(x => x.Min >= calculationViewModel.SalesPrice)            .FirstOrDefault()            .OP;        decimal MP = landTitleUnitOfWork.Sales.Find()            .Where(x => x.Min >= calculationViewModel.MortgageAmount)            .FirstOrDefault()            .MP;        calculationViewModel.LoanAmount = (OP + 100) - MP;        calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850);        return View(calculationViewModel);    }    else    {        // Do something else...    }}

蓝山帝景

我在邮差工具中测试WebAPI时遇到此错误。构建代码后,如果在调试模式下删除任何行(例如,在我的情况下,我删除一条注释行,则会发生此错误...),则将发生“ 非静态方法需要目标 ”错误。同样,我尝试发送相同的请求。这段时间代码正常工作。我在邮递员中得到了正确的答复。我希望它将对某人有用...
打开App,查看更多内容
随时随地看视频慕课网APP