我想将自定义过滤器传递给我的控制器中的操作方法。 我尝试像那样定义它。是否可以将委托传递给控制器操作?
public ActionResult GetResult(Func<Fault,bool> filter)
{
List<Fault> faultList;
using (var _context = new myDB())
{
faultList =
from f in _context.Faults
where filter(f)
select f;
}
return Json(faultList);
}
但是当我运行的操作,我得到一个错误
此对象定义无参数的构造函数。
在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔NOCHECK,布尔& canBeCached,RuntimeMethodHandleInternal &构造函数,布尔& bNeedSecurityCheck)在System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark &在System.Web的System.Activator.CreateInstance(Type类型)System.Activator.CreateInstance(类型类型,布尔型非公共)上的System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark & stackMark) System.Web.Mvc上的Mvc.DefaultModelBinder.CreateModel(ControllerContext controllerContext,ModelBindingContext bindingContext,Type modelType)。 DefaultModelBinder.BindComplexModel(ControllerContext controllerContext,ModelBindingContext的BindingContext)在System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext,ModelBindingContext的BindingContext)在System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext,ParameterDescriptor parameterDescriptor)在System.Web.Mvc .ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext,ActionDescriptor actionDescriptor)at System.Web.Mvc.ControllerBase.Execute System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)System.Web.Mvc.Controller.ExecuteCore() (RequestContext requestContext)位于System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)位于System.Web.Mvc.MvcHandler。 <> c_ DisplayClass6。 <> c _DisplayClassb.b_ 5()at System.Web.Mvc.Async.AsyncResultWrapper。 <> c _DisplayClass1.b_ 0()at System.Web.Mvc.Async.AsyncResultWrapper。 <> c _DisplayClass8
1.b__7(IAsyncResult _) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
1.End()at System.Web.Mvc.MvcHandler。 <> C_ DisplayClasse.b _d()在System.Web.Mvc.SecurityUtil.b__0(动作f)位于System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(动作动作)在System.Web.Mvc.MvcHandler.EndProcessRequest( IAsyncResult asyncResult)System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult结果)在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()在System.Web.HttpApplication。 ExecuteStep(IExecutionStep步骤,布尔型&同步完成)
是否可以执行类似事件?
如果不是通过委托可以建议另一种方式吗?
你发送给这个动作是什么数据?您如何期望从该数据创建的'Func过滤器? –
nemesv
2013-03-28 06:10:35
我在想像@ Html.Action(“GetResults”,新的{filter =(f => f.TypeID == 1)})或类似的东西... – Mortalus 2013-03-28 07:25:14