日期:2014-05-17  浏览次数:20478 次

大牛进!跟技术主管发生分歧了,MVC中的Controller是否可以使用继承来写Action??
本帖最后由 idoiknow 于 2013-02-27 11:33:19 编辑
关于MVC路由的问题。

项目里所有的Controller都是从一个BaseController中派生的。

BaseController里面我加了一个虚方法,是写成Action的,有逻辑实现,目的是实现一个通用的功能,如果某些Controller的这个Action需要特殊处理的,就在具体的Controller里面重写这个虚方法,否则默认调用基类的虚方法的执行逻辑。

但技术主管说这个不行,他没见过这样写的,会有两个路由什么的...balabala

我无法理解他的观点,感觉这样写也没有什么问题,请教各位大牛,这样写会有弊端吗?

贴代码:
(基类)
    /// <summary>
    ///  所有ReportController都要继承的基类
    /// </summary>
    public abstract class BaseController
    {
        [HttpPost]
        public virtual JsonResult AddIssueReport(AddIssueReportModel inputModel)
        {
            //通用实现逻辑
        }
    }

(具体Controller)
    /// <summary>
    /// ***报表-控制器
    /// </summary>
    public class CanvassBusinessReportController : BaseController
    {
        /// <summary>
        /// 重写基类的报表补发方法
        /// </summary>       
        /// <returns></returns>
        [HttpPost]
        public override JsonResult AddIssueReport(AddIssueReportModel inputModel)
        {
              //特殊实现逻辑
        }
    }


------解决方案--------------------
只要可用可读可维护, 没什么不行的
------解决方案--------------------
假如你是对的,胳膊拧不过大腿
假如你是错的,你们老大可能真是站的高,看的远


我分不出对错。只能与楼主共勉。
期待自己看清的那天
------解决方案--------------------
可扩展,可维护,有什么不好的?
某些人总是将自己不熟悉的归于非安全的。
------解决方案--------------------
人家不是在征求意见。

你在行使人家的职权,你要人家作什么,你要作什么?

写个大致能通用的基类,特殊的自己另外实现。

让程序的特殊性零星分散到各个地方?我看不是好主意。
------解决方案--------------------
从名字来看并不是所有继承类都需要,为什么不再设计一个基类使得功能进一步具体化(需要这个Action的子类派生于此)