【发布时间】:2013-03-28 05:35:11
【问题描述】:
我想将自定义过滤器传递给控制器中的操作方法。 我试着这样定义它。
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.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark & stackMark) at System.RuntimeType. RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at System.Web.Mvc.DefaultModelBinder.CreateModel(在 System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 在 System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 在 System.Web.Mvc 的 ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)。 ControllerActionInvoker.G etParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) 在 System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) 在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 在 System.Web.Mvc.Controller .ExecuteCore() 在 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) 在 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) 在 System.Web.Mvc.MvcHandler。c_DisplayClass6.c_DisplayClassb.b_5() 在 System.Web.Mvc.Async.AsyncResultWrapper.c_DisplayClass1.b_0()在 System.Web.Mvc.Async.AsyncResultWrapper.c_DisplayClass8
1.b__7(IAsyncResult _) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.End() 在 System.Web.Mvc.MvcHandler.c_DisplayClasse.b_d () 在 System.Web.Mvc.SecurityUtil.b__0(Action f) 在 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) 在 System.We b.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 step, Boolean& completedSynchronously)
有没有可能做这样的事情?
如果不是通过委托,你能建议另一种方式吗?
【问题讨论】:
-
您向此操作发送什么数据?您如何期望
Func<Fault,bool> filter创建的表格中的数据? -
我在想@Html.Action("GetResults",new {filter = (f=> f.TypeID == 1) }) 之类的东西...
标签: c# asp.net-mvc linq delegates controller