zoukankan      html  css  js  c++  java
  • 浅谈.net MVC

      大学毕业对MVC的概念还不是很清晰,总觉得MVC是和三层一样的,是同一级别的架构。其实不然,三层架构是:BLL(业务逻辑层),DAL(数据库访问层),UI(页面显示层),而MVC仅仅是属于三层架构UI层。可以说MVC就是为了更好的展示数据,如果把三层架构比作一个完整的人,那么MVC就是这个人的脸,用来展示东西。说这么多就是给刚接触MVC的人从概念上明白MVC是个什么东西,就是一种理念,一种展示数据的模式。

      说到MVC不得不说很早以前拖拉控件的时代,微软开发了Windows系统让小白就能接触电脑这些高科技产品,使得普通用户用图形化界面替换掉以前Linux黑窗口的时代,不得不说微软成功了。后来,微软感觉把普通用户变成小白不过瘾,企图把开发人员也变成小白,推出了WebForm,个人感觉这种想法很好,很超前,可能在很多年之后就没有我们这些“程序员”了只有设计。但是放到现在还是不太现实,刚推出的时候感觉很新奇就研究了下,托拉拽感觉很爽,可是那时候使用WebForm的企业死的很惨,因为就页面隐藏域藏得那些东西神仙都不知道是什么鬼,并且性能也是差的不要不要的,结果很快的死了(从微软刚发布的.net core不支持WebForm就可以看出微软放弃把程序员变成小白了)

      言归正传,聊聊MVC把,M(model),V(view),C(control)。model是control和view之间通过实体传输数据,control返回一个视图view可以通过model(实体)传递。view的强类型页面就可以通过在control中的方法中return view(model) 来让view可以通过Model来点出来要传递的数据。如果把model绑定到input的value上就会根据model有没有数据来显示要修改该的页面。

      在每一个action中都要有return一个继承自JsonResult的对象,其中包括最常见的 ViewResult(return View())视图、JsonResult(return Json())json字符串、ContentResult(return Content())原样输出 等。

    control和view之间除了这种强类型传递数据之外还有另外三种方法来传递数据

    如下所示:

    1.使用ViewData传递数据

    我们在Controller中定义如下(类型是ViewDataDictionary,可以看出这个方式适合传递键值对):

    ViewData[“Message_ViewData”] = “ Hello ViewData!”; 

    然后在View中读取Controller中定义的ViewData数据,代码如下:

    @Html.Encode(ViewData["Message_ViewData"]) 

    js中读取ViewData中数据如下:

    <pre name="code" class="javascript"><script type="text/javascript">  
        var viewData = '@ViewData["Message_ViewData"]';  
    </script> 

    2.使用ViewBag传递数据

    我们在Controller中定义如下(其类型是dynamic可以动态的添加其类型,结构也变得多样化):

    ViewBag.Message_ViewBag =  “ Hello ViewBag !”;  

    然后在View中读取Controller中定义的ViewBag数据,代码如下:

    @Html.Encode(ViewBag.Message_ViewBag)

    js中读取ViewBag中数据如下:

    <script type="text/javascript">  
        var viewBag= '@ViewBag.Message_ViewBag';  
    </script> 

    3.使用TempData传递数据

    我们在Controller中定义如下(其类型是TempDataDictionary,也是适合传递键值对,但是这种传递数据的方式有种特点,就是只能存在两次http请求,只要取出来就会销毁,经过研究发现其原来是把数据存到session中,取出一次后就会自动把session销毁):

    TempData[“Message”] = “Hello word!”; 

    然后在View中读取Controller中定义的TempData数据,代码如下:

    @Html.Encode(TempData["Message_TempData"]) 

    js中读取TempData中数据如下:

    <script type="text/javascript">  
         var tempData = '@TempData["Message"]';  
    </script> 
  • 相关阅读:
    map按照值排序
    结构体的三种排序方式
    归并排序
    数组模拟双向链表
    二刷斐波那契高精度
    2019年9月训练(贰)区间DP (luogu 4290)
    2019年9月训练(壹)数位DP (HDU 2089)
    2019年8月训练(贰)
    2019年8月训练(壹)二分,三分
    2019年7月训练(柒)
  • 原文地址:https://www.cnblogs.com/mykcode/p/7522149.html
Copyright © 2011-2022 走看看