asp.net-mvc – 属性的自定义模型binder
我有一个以下控制器操作:
[HttpPost] public ViewResult DoSomething(MyModel model) { // do something return View(); } MyModel看起来像这样: public class MyModel { public string PropertyA {get; set;} public IList<int> PropertyB {get; set;} } 所以DefaultModelBinder应该绑定这个没有问题。唯一的事情是,我想使用特殊/自定义绑定绑定PropertyB,我也想重用这个绑定。所以我认为这个解决方案是在PropertyB之前放置一个ModelBinder属性,当然这不是一个属性(属性不允许使用ModelBinder属性)。我看到两个解决方案: 1.)使用动作参数而不是我不喜欢的模型(模型有很多属性…),如下所示: public ViewResult DoSomething(string propertyA,[ModelBinder(typeof(MyModelBinder))] propertyB) ... 2.)要创建一个新类型,可以说MyCustomType:列出并注册此类型的模型binder(这是一个选项) 还有其他的第三个解决方案吗?也许为MyModel创建一个绑定,重写BindProperty,如果属性“PropertyB”绑定属性与我的自定义绑定。这可能吗? 感谢您的答案… 解决方法
这是一个很好的解决方案,虽然不是检查“是PropertyB”,但您最好检查自己定义属性级绑定器的自定义属性,例如 [PropertyBinder(typeof(PropertyBBinder))] public IList<int> PropertyB {get; set;} 您可以看到BindProperty覆盖here的示例。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AddToRole和IdentityRole不是当前上下文模型的一
- asp.net – 单元测试操作过滤器 – 如何模拟ViewResult
- asp.net-mvc – ASP.NET MVC – 服务层 – 业务层 – 数据层
- 是否可以优化ASP.NET WebForms以便像ASP.NET MVC一样快速执
- .net – 如何配置Simple Injector IoC以使用RavenDB
- asp.net – ‘Owin.IAppBuilder’不包含’MapSignalR’的定
- ASP.NET DataGrid和自定义分页
- IIS ASP.Net网站 – ManagedPipelineHandler错误(尝试对不存
- 如何使用ASP.NET创建一个非常简单的Web代理?
- asp.net-mvc-3 – MVC3 @ Html.DropDownList不填充所选项目