关于MVC的一点看法

最近,这个微软的MVC,是在圈内非常的火热,貌似不会mvc,都有点丢人。

这个产品也有很多年了,从mvc3我就关注过,当时觉得不怎么好,就没有用,现在是mvc5了,也关注了下,觉得还是不是太好。也可能是我有点阁僚。

为什么我就非常不喜欢呢?
有句话是这样说的,爱屋及乌
而我是 恶其余胥

Razor 非常糟糕!
虽然是服务器端的页面解析 引擎,可能比WebPage好多了,但是这个写法,在html代码里面,嵌入了一些服务器端代码,感觉又回到了asp时代,jsp时代,不进反退。
我这么说是因为,好多用mvc的同时是这样写的。

  
                        @{
                            /*通过部门bll绑定循环中有关部门id的字段变为部门名称*/
                            Base_InstitutionsSetBll bi = new Base_InstitutionsSetBll();
                            Base_RoleBll br = new Base_RoleBll();
                            string shzt = null;
                        }
                        @if (ViewData["ErrMsg"].ToString() == "")
                        {

                            foreach (var item in Model)
                            {
                                

                                    class="hidden-480 center">
                                        @item["YHZH"]

                                    
                                    class="center">
                                        @item["YHXM"]
                                    

                                    class="center">
                                        @{
                                if (item["SHZT"].ToString() == "1")
                                { shzt = "已审核"; }
                                if (item["SHZT"].ToString() == "0")
                                { shzt = "未审核"; }
                                if (item["SHZT"].ToString() == "2")
                                { shzt = "审核未通过"; }
                                        }
                                        @Html.Raw(shzt)
                                    
                                    class="center">
                                        @Html.Raw(item["ZHZT"].ToString() == "1" ? "启用中" : "禁用中")
                                    
                                    class="center">
                                        @item["ZCSJ"]
                                    
                                    class="center">
                                        @item["DLCS"]
                                    
                                
                            }                            
                        }
                    

是我这位同事写的糟糕呢?还是大家都是这样?
在Razor视图,也就是View视图层面,出现大量后端程序的代码逻辑,这个是前端程序完全看不懂的。
据说MVC要分层,要做到前后端分离。在视图层,只进行数据的显示,进行一些简单的逻辑,而不是把所有的逻辑放在前端,在前端还进行大量的业务调用,可能还会出现对数据库的操作调用。

如果是在视图层,只写普通的html代码,以及一些扩展的html标签,以及调用一些函数会怎样呢?例如这样……

 <tbody>
            <eye:foreach collection="${vipUserList}" var="vipuser" index="index">
                <tr>
                <td>${index}td>
                <td>${vipuser.UserName}td>
                <td>${vipuser.Name}td>
                <td>${vipuser.Gender}td>
                <td>${vipuser.Phone}td>
                <td>${cdatestring(vipuser.CreateDate,'yyyy-MM-dd HH:mm')}td>
                <td>${vipuser.Nickname}td>
                <td>

                td>
            tr>
            eye:foreach>

        tbody>

注:据说mvc6就可以避免出现大量的C#代码了

解析流程特别糟糕!
在使用MVC时,如果需要访问某个页面,是不能访问的,必须有一个控制器,也就是,每个页面对应一个控制器,不然是无法访问的。例如有个视图是logon.cshtml,而页面可能就是个简单的登录框,不需要任何的后台代码,此时,也不能直接进行访问,必须通过一个Action才能访问到。
我这样说对么?
如果我们能直接访问到logon这个页面就好了,例如: /sys/logon.aspx

自定义Route解析规则
mvc的路由规则有点让人很愤怒!
例如,我想让所有不符合规则的请求都请求某个action或者某个页面(不是404页面),这个时候,我傻了,MVC本身不可以这样,只能返回一个404.
我们是不是可以让所有不符合规则的请求,都请求我们自己定义的某个Action呢?(设置404属于mvc的体制范畴之外) 然后我们根据请求,来输出内容。

可能在所有人都把MVC捧为香饽饽的时候,我来这么一篇博文会让他们很不高兴,但我在开发中确实遇到了这样的问题,这些问题不解决。

你可能感兴趣的:(MVC)