非静态方法需要一个目标 [英] Non-static method requires a target

查看:89
本文介绍了非静态方法需要一个目标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个控制器动作,在本地和生产中都可以在Firefox上工作,而IE本地工作,而不是在生产中的IE。这是我的控制器操作:

I have a controller action that works fine on Firefox both locally and in production, and IE locally, but not IE in production. Here is my controller action:

 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中得到的堆栈跟踪:

Here is the stack trace I get in IE:


错误。
处理您的请求时发生错误。
System.Reflection.TargetException:非静态方法需要一个目标。在
System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)at
System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags
invokeAttr,Binder binder,Object []参数,CultureInfo文化)在
System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder
binder,Object []参数,CultureInfo文化)在
System.Reflection.RuntimePropertyInfo.GetValue(Object obj,对象[]索引)在
System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me,Object instance,Object& memberValue)at
System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression表达式,ConstantExpression& constantExpression)在
System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object [] arguments)
在System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable 1 forMergeOption)
at System.Data.Objects.ObjectQuery
1.
的系统结果(Nullable 1 forMergeOption)System.Data.Objects.ObjectQuery 1.系统.Collections.Generic.IEnumerable.GetEnumerator()
在System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable 1源)
System.Linq.Queryable.FirstOrDefault [TSource ](code $ 1 $)
LandTitle.Controllers.HomeController.MNRefi()在lambda_method(Closure,ControllerBase,
Object [])在System.Web.Mvc.ReflectedActionDescriptor在
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext,ActionDescriptor actionDescriptor,IDictionary controllerContext,IDictionary 2参数) $ c> 2参数)
Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget()在Castle.DynamicProxy.AbstractInvocation.Proceed()在
Glimpse.Mvc3.Interceptor.InvokeActionMethodIn terrant.Intercept(IInvocation调用)在Castle.DynamicProxy.AbstractInvocation.Proceed()在
Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2参数)在
System.Web。 Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass37。c__DisplayClass39.b__33()at
System.Web.Mvc.Async.AsyncControllerActionInvoker。<> c__DisplayClass4f.b__49()at
System.Web在System.Web上的
System.Web.Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass25。c__DisplayClass2a.b__20()中的.Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass37.b__36(IAsyncResult asyncResult)。 Mvc.Async.AsyncControllerActionInvoker。c__DisplayClass25.b__22(IAsyncResult asyncResult)

Error. An error occurred while processing your request. System.Reflection.TargetException: Non-static method requires a target. at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) at System.Data.Objects.ELinq.QueryParameterExpression.TryGetFieldOrPropertyValue(MemberExpression me, Object instance, Object& memberValue) at System.Data.Objects.ELinq.QueryParameterExpression.TryEvaluatePath(Expression expression, ConstantExpression& constantExpression) at System.Data.Objects.ELinq.QueryParameterExpression.EvaluateParameter(Object[] arguments) at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable.GetEnumerator() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable1 source) at LandTitle.Controllers.HomeController.MNRefi() at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) at Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.b__20() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult)


推荐答案

我认为这个混乱的异常会发生在使用lambda的变量,这是在run-t的空引用我。在你的情况下,我会检查你的变量calculateViewModel是一个空引用。

I think this confusing exception occurs when you use a variable in a lambda which is a null-reference at run-time. In your case, I would check if your variable calculationViewModel is a null-reference.

这样的东西:

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...
    }
}

这篇关于非静态方法需要一个目标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆