asp.net-mvc – Asp.net mvc 3 – 自定义模型绑定
发布时间:2020-12-16 07:22:27 所属栏目:asp.Net 来源:网络整理
导读:我有这样的模特 public string Name { get; set; } public IEnumerableint ProjectMembersId { get; set; } 应使用标准绑定代码绑定属性Name. 但属性ProjectMembersId应该使用我的自定义代码绑定. 所以我从DefaultModelBinder派生了一个类并重写了SetPropert
我有这样的模特
public string Name { get; set; } public IEnumerable<int> ProjectMembersId { get; set; } 应使用标准绑定代码绑定属性Name. 但属性ProjectMembersId应该使用我的自定义代码绑定. 所以我从DefaultModelBinder派生了一个类并重写了SetProperty方法. protected override void SetProperty(ControllerContext controllerContext,ModelBindingContext bindingContext,System.ComponentModel.PropertyDescriptor propertyDescriptor,object value) { if (propertyDescriptor.Name == "ProjectMembersId") { var list = new List<int>(5); var form = controllerContext.HttpContext.Request.Form; var names = form.AllKeys.Where(x => x.StartsWith("dhxGridObj")); foreach (var name in names) { int i; if (int.TryParse(form.Get(name),out i)) { list.Add(i); } } value = list; } base.SetProperty(controllerContext,bindingContext,propertyDescriptor,value); } 芽问题是没有调用SetProperty方法,因为值提供程序不包含名为ProjectMembersId的项. 也许我正在覆盖defaultModelBinder的错误部分.那么最好的方式是什么? 解决方法
使用BindProperty方法尝试:
public class CustomModelBinder : DefaultModelBinder { protected override void BindProperty(ControllerContext controllerContext,System.ComponentModel.PropertyDescriptor propertyDescriptor) { if (propertyDescriptor.Name == "ProjectMembersId") { var list = new List<int>(5); var form = controllerContext.HttpContext.Request.Form; var names = form.AllKeys.Where(x => x.StartsWith("dhxGridObj")); foreach (var name in names) { int i; if (int.TryParse(form.Get(name),out i)) { list.Add(i); } } SetProperty(controllerContext,list); } else { base.BindProperty(controllerContext,propertyDescriptor); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何在C#中获取特定文件夹的总大小?
- asp.net-mvc – 在哪里可以找到C#示例代码来实现ASP.NET MV
- asp.net-mvc-3 – 如何将MVC3中的HTML和C#代码与Razor混合?
- asp.net-mvc – 在自定义HTML帮助器中调用Html.ActionLink
- VS2015如何创建单元测试并启动调试
- asp.net – 我是否需要viewstate来输入控件,如复选框,文本框
- .net – 什么可以解释托管堆上超过5,000,000个System.WeakR
- asp.net – 在网页上显示文本时,Replace(Environment.NewLi
- asp.net – 每个Web服务器的Azure Service Bus主题订阅
- asp.net – 将图像上传到FTP时出错
推荐文章
站长推荐
- 在剃刀助手方法中添加不间断的空格
- asp.net-mvc – 跨项目共享剃刀视图
- asp.net-mvc – 如何将复杂对象传递给ASP.NET MV
- asp.net-core – db ASP.NET Core中的临时保存密
- .net-core – VS 2017中缺少ASP.NET Core 2模板
- asp.net-mvc – 我应该为ASP.Net MVC项目使用什么
- asp.net – 在.NET应用程序上使用Phantom JS生成
- asp.net – WCF中的405方法不允许错误
- 在ASP.NET WebForms中通过HTTPS远程访问elmah.ax
- asp.net-mvc – Asp.net mvc 2 – 从ActionFilte
热点阅读