wog*_*les 4 checkbox asp.net-mvc pagedlist
我有以下PagedListModel:
public class PagedClientViewModel
{
public int? Page { get; set; }
public PagedList.IPagedList<ClientViewModel> Clients { get; set; }
}
public class ClientViewModel
{
public string ClientNumber { get; set; }
public bool UseThisClient{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的观点如下:
@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { id = "Form" }))
{
@foreach (var item in Model.Clients)
{
@Html.DisplayFor(modelItem => item.ClientNumber)
@Html.CheckBoxFor(modelItem => item.UseThisClient)
}
@Html.HiddenFor(model => model.Clients)
}
Run Code Online (Sandbox Code Playgroud)
控制器动作:
public ActionResult Index(PagedClientViewModel model)
{
//...process all clients in the list
}
Run Code Online (Sandbox Code Playgroud)
我想将模型发布回控制器,以便我可以处理已勾选的复选框,但是我收到以下错误:我有点理解错误是因为我发布了一个界面但我找不到方法在那附近.我怎样才能完成这项工作?
无法创建接口的实例.在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔NOCHECK,布尔逻辑canBeCached,RuntimeMethodHandleInternal&构造函数,布尔逻辑bNeedSecurityCheck)在System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark&stackMark)在System.RuntimeType.CreateInstanceDefaultCtor (布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark&stackMark)
在System.Activator.CreateInstance(类型类型,布尔非公开)
在System.Activator.CreateInstance(类型类型)在System.Web.Mvc.DefaultModelBinder.CreateModel(controllerContext controllerContext,在System.Web的System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)的System.Web.Mvc.DefaultModelBinder.BindSimpleModel(ControllerContext controllerContext,ModelBindingContext bindingContext,ValueProviderResult valueProviderResult)上的ModelBindingContext bindingContext,TypeTypeType)
System.Web.Mvc.DefaultModelBinder.BindProperties上的System.Web.Mvc.DefaultModelBinder.BindProperty(ControllerContext controllerContext,ModelBindingContext bindingContext,PropertyDescriptor propertyDescriptor)中的.Mvc.DefaultModelBinder.GetPropertyValue(ControllerContext controllerContext,ModelBindingContext bindingContext,PropertyDescriptor propertyDescriptor,IModelBinder propertyBinder)(在System.Web.Mvc的System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext,ModelBindingContext bindingContext)的System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext,ModelBindingContext bindingContext,Object model)
中的ControllerContext controllerContext,ModelBindingContext bindingContext. System.Web.Mvc.ControllerActionInvoker.GetParameterValue中的DefaultModelBinder.BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)(ControllerContext controllerContext,ParameterDescriptor parameterDescript)或)在System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext,ActionDescriptor actionDescriptor)在System.Web.Mvc.Async.AsyncControllerActionInvoker.<> C_ DisplayClass25.b在System.Web.Mvc _1e(的AsyncCallback的AsyncCallback,对象asyncState) .Async.AsyncResultWrapper.WrappedAsyncResult1.Begin(AsyncCallback callback, Object state, Int32 timeout) at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__17(AsyncCallback asyncCallback, Object asyncState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
1.Begin(AsyncCallback的回调,对象的状态,的Int32超时)在System.Web.Mvc.Controller.BeginExecuteCore在System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult(AsyncCallback的回调,对象状态)1.Begin(AsyncCallback callback, Object state, Int32 timeout) at System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__2(AsyncCallback asyncCallback, Object asyncState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
1.开始(AsyncCallback的回调,对象的状态,的Int32超时)在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase HttpContext的,AsyncCallback的回调,对象状态)在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext的HttpContext的,AsyncCallback的回调,对象状态)在System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext的上下文中,的AsyncCallback CB,而额外对象)在System.Web.HttpApplication.CallHandlerEx System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)中的ecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
小智 9
解决此问题的方法是将分页元数据作为单独的属性传递,并在视图中重建IPagedList.如下
public class PagedClientViewModel
{
public int? Page { get; set; }
public List<ClientViewModel> Clients { get; set; }
public IPagedList PagingMetaData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
创建元数据
pagedClientViewModel.PagingMetaData = new StaticPagedList<ClientViewModel>(pagedClientViewModel.Clients, pageIndex, pageSize, TotalClients).GetMetaData();
Run Code Online (Sandbox Code Playgroud)
在视图中构建寻呼机
<div style="text-align: center">
@Html.PagedListPager(new StaticPagedList<ClientViewModel>(Model.Clients, Model.PagingMetaData), page => Url.Action("<actionname>", new { page }), PagedListRenderOptions.Classic)
</div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5341 次 |
最近记录: |