asp.net mvc3 模型绑定时的多态

做项目的时候遇到了一个问题,就是同一类,但是不同字段的视图显示不太一样,验证不太一样,因此共同的部分抽取出了基类,其他的继承了基类,但是模型逻辑字段都是差不多的,因此希望视图和Controller的逻辑都希望能实现多态。

搜索stackoverflow, http://stackoverflow.com/search?q=asp.net+mvc+Polymorphism

1.     http://stackoverflow.com/questions/15120425/asp-net-mvc-viewmodels-polymorphism同我的问题,但是没有合适的答案。

2.     另一个问题和答案中写到这个问题没有合适的解决方案,已经被人用各种方式问过和尝试过了。但是这个问题说得是界面的多态。

3.     http://stackoverflow.com/questions/11832044/asp-net-mvc3-razor-syntax-to-cast-a-model-to-its-subclass-by-reflection

据说用metadatatype可以解决model用同个抽象类,不同的验证。但是自己试了下发现仍然报错。

4.     http://stackoverflow.com/questions/5460081/asp-net-mvc-3-defaultmodelbinder-with-inheritance-polymorphism

model binder来解决问题,最后发现可行,按照上面链接的解决方案(不是问题本身)描述的完全可以解决问题。

这个最后解决的方案是不同的model用不同的视图,用不同的@model,但是在controller时统一逻辑,用同一个action,通过自定义的model binder来实现不同的模型映射到不同的实例中。


PS:上述最后链接中有人提到还可以在其他情况下适用性更高的解决方案, http://maciejlis.com/asp-mvc-3-model-binder-with-abstract-class-support/,不过这个链接内容没有细看,因为原先的问题答案已经可以解决我的问题了。留着以备将来看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值