非静态方法需要一个目标。
非静态方法需要一个目标。
我有一个控制器动作在Firefox上在本地和生产环境都可以正常工作,在本地的IE上也可以工作,但在生产环境的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)中 at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags invokeAttr,Binder binder,Object[] parameters,CultureInfo culture) 在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] parameters,CultureInfo culture) 在System.Reflection.RuntimePropertyInfo.GetValue(Object obj,Object[] index)中 在System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me,Object instance,Object&memberValue)中 在System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression,ConstantExpression&constantExpression)中 在System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object[] arguments)中 在System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
1 forMergeOption)中 在System.Data.Objects.ObjectQuery
1.GetResults(Nullable1 forMergeOption)中 在System.Data.Objects.ObjectQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator()中 在System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source)中 在System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 source)中 在LandTitle.Controllers.HomeController.MNRefi()中 在lambda_method(Closure,ControllerBase,Object[])中 在System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary2 parameters)中 在System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary
2 parameters)中 在Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget()中 在Castle.DynamicProxy.AbstractInvocation.Proceed()中 在Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation invocation)中 在Castle.DynamicProxy.AbstractInvocation.Proceed()中 在Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary``2 parameters)中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33()中在System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()中在System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult)中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.b__20()中在System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult)
请将下面的内容翻译为中文,不要翻译HTML标签,单引号和双引号内的内容,保留原文中的\"
123
\" 字符:
我认为,当您在lambda中使用一个在运行时为null引用的变量时,就会出现这种令人困惑的异常。在您的情况下,我会检查您的变量calculationViewModel是否是null引用。
像这样:
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... } }