关于Mvc与WebForm的优缺点在网上的评论可谓不胜枚举,但脱离了我们的项目来谈这些意义就不大了。以我们这次改版来看,WebForm的优势有以下几点:

         一,可以使用<#include>,css、html与js可以实现跨页面乃至夸项目的重用,Mvc没有发现此类功能;

         二,可以精确的调用用户控件中的属性、字段、函数并可以获得相应的返回值,Mvc也未发现此类功能;

         三,可以方便的将公共或保护性字段属性函数等应用到aspx页面上,Mvc无法直接调用控制其中的相应字段属性等。

      针对以上WebForm的有点或Mvc的确点,我们在改版商铺写字楼时遵循了下面的几个规范予以弥补:

           一,使用局部视图来实现html的重用;

          二,对控制器中所用到的属性字段函数进行合理的封装,如将原有的变量集成到一个大的类中作为一个强类型视图传递的对象传给相应的视图,实现在视图中的方便使用。在这里对于类的划分需要尽可能的把相关性比较高的放到一块儿,优先采用类的组合而非继承,若需要放到视图对象中的字段是一个较大的复合类,如经纪人实体或房源实体,建议单独存放在ViewBag中。这些做法的目的比一方面希望这些变量使用起来更加方便,另一方面减小在视图中调用局部视图或函数的时候传递参数的颗粒度,也就提高了这些局部视图或函数的重用性,如用经纪人实体做参数的函数我们既可以在商铺写字楼中用,也可以用在普通的经纪人详情页中使用,而视图对象做参数无法实现这点;

          三,将代码的重用单位放到对象和函数上,原则上不在控制器中创建不直接向浏览器做交代的函数,而是放在底层以方便重用。

        在遵循了上述一些规范之后方才发现Mvc还是有些优点的:

           一,优秀的Razor引擎使得在视图中使用C#代码更加方便流畅;

           二,单个视图可以对应多个控制器,提高了代码的重用;

           三,在主视图的ViewBag或ViewData中存储的对象可以在局部视图(仅限通过RenderPartial方式渲染的视图)或母版页中使用;

           四,可以在视图中以函数方式重用普通的html代码到局部视图中且可以向局部视图中传递一个对象;

           五,视图与控制器的分界更加清晰,局部视图的重用可以直接在视图中予以调用,而在WebForm中用户控件在后台代码中由于需要传参绑定而无法放在底层实现更高的重用。

     除了上面的异同,还有一些在WebForm与Mvc中名字相同的对象,这些对象虽然名字相同,但是类型已经不是一个类型了,如:

 1         //
 2         // 摘要:
 3         //     为当前 HTTP 请求获取 System.Web.HttpRequestBase 对象。
 4         //
 5         // 返回结果:
 6         //     请求对象。
 7         public HttpRequestBase Request { get; }
 8         //
 9         // 摘要:
10         //     为当前 HTTP 响应获取 System.Web.HttpResponseBase 对象。
11         //
12         // 返回结果:
13         //     响应对象。
14         public HttpResponseBase Response { get; }
Mvc中的http对象

相关文章:

  • 2018-03-02
  • 2022-12-23
  • 2022-02-10
  • 2022-02-10
  • 2021-08-05
  • 2022-02-10
猜你喜欢
  • 2022-02-10
  • 2021-11-27
  • 2022-02-10
  • 2022-02-10
  • 2022-12-23
  • 2022-02-10
相关资源
相似解决方案