MVC框架概述

            2014.11.8我们完成为时两月的中级软考准备,没有多余的时间去放松、娱乐,紧接着迎来了我进入提高班以来真正的一次项目实践--高效平台。

         我做的是基础系统,就是一个算是幕后英雄的角色吧!考试系统、评教系统需要我们的数据、同时新生入学系统由我们来维护,所以说任务艰巨而重要,这一节最重要的就是说软件开发中的第一项内容:知识补充---MVC

          何谓MVC(Model View Controller):M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如统计学生数据可以分别用柱状图、饼形图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

         它的具体操作过程如下所示:

 
    

        模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变.

     视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。

     控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。  

    下面用一个例子来对MVC进行解释:

        创建一个项目如下图所示:

        右击Controller文件夹,新建一空Controller,命名为HelloWorld,将代码改为如下:

public class HelloWorldController : Controller
{
    public string Index()
    {
        return "Hello world";
    }

    public string Hello()
    {
        return "Hello everyone";
    }

    public string Hello2(string name)
    {
        return "Hello to you " + name;
    }
}

           右击添加视图: 

         在新建的视图中添加代码:(结合了css+div)

@using 自动导入程序集.Models
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <style type="text/css">
        #tblist {
            border: 1px solid #0094ff;
            width: 600px;
            margin: 10px auto;
            border-collapse: collapse;
        }

            #tbList th, td {
                border: 1px solid #0094ff;
                padding: 10px;
            }
    </style>
    <script type="text/javascript">
        function del(id) {
            if (confirm("您确定要删除吗?亲~~")) {
                window.location = "/home/del" + id;
            }
        }
    </script>
</head>
<body>
    <table>
        <tr>
            <th>id</th>
            <th>标题</th>
            <th>分类</th>
            <th>状态</th>
            <th>时间</th>
            <th>操作</th>
        </tr>
        <!--遍历Action方法,设置给ViewData集合数据,生成HTML代码-->
        @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
        {
            <tr>
                <td>@a.AId </td>
                <td>@a.ATitle </td>
                <td>@a.ACate </td>
                <td>@a.AStatu </td>
                <td>@a.AAddtime </td>
                <td>
                    <a href="javascript:del(@a.AId)">删除</a>
                    <a href="/home/modify/@a.AId">改</a>
                </td>
            </tr>
        }
    </table>
    @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
    {

    }
</body>
</html>

          接下来来实现一个基本的增删改的功能。假设我们要对博客的基本信息进行管理,首先需要定义一个Model类型,新建一个Model,代码如下:

namespace HelloWorld.Models
{
    public class BlogArticle
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<movie> Movies { get; set; }
    }
}

        接下来,我们新建一个Movie的Controller,使用ef(EntityFramework)来存取数据,如下配置:
      

         通过EF可以动态的为你创建数据库,果Model文件发生了变化,例如添加了一个字段,网页就会报错,要解决有两种方案,一是调用Database.SetInitializer方法来自动重建数据库,二是手动修改数据库表。第一种方法虽然简单但是会导致已有的数据丢失,他会重建整个数据库。但是在开发初期非常适合使用。在这里先采用第一种方案。具体方法是,在model中新建一个类继承自DropCreateDatabaseIfModelChanges类。在其中可以加上可选的初始化数据的代码,然后在Global.asax中将这个对象注册下。

         对于mvc的理解仅仅局限在实现上,认识还很肤浅,希望和大家交流!

时间: 2024-09-19 12:51:23

MVC框架概述的相关文章

基于MVC模式的Struts框架概述

作者:yarshray   关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts 内容简介:        MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.        本文内容注重理论和实践相结合,比较系统的从多层设计方式到分布式软件开发中所用到的技术,从而切入目前Sun公司退出的

《Spring 5 官方文档》18. Web MVC 框架(八)

18.8.5 LocaleChangeInterceptor 您可以通过添加LocaleChangeInterceptor到其中一个处理程序映射来启用更改区域设置(请参见第18.4节"处理程序映射").它将检测请求中的一个参数并更改区域设置.它呼吁setLocale()在LocaleResolver上下文中也存在.以下示例显示,对包含*.view名为的参数的所有资源的调用siteLanguage现在将更改语言环境.因此,例如,对以下URL的请求http://www.sf.net/hom

PHP简单的MVC框架实现方法_php实例

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中. 1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 2.代码结构 3.代码实现 <?ph

php-使用PHP搭建自己的MVC框架 搭建时出现的问题

问题描述 使用PHP搭建自己的MVC框架 搭建时出现的问题 你好,我按照<使用PHP搭建自己的MVC框架>上面的步骤来进行搭建这个框架,但是把所有的步骤都做完了,最后访问的时候提示找孙到页面,请问这个问题应该怎么解决呢,还是框架本身就有问题呢,求指教,谢谢! 解决方案 看看作者有没有提供完整的源代码,如果没有,这种例子根本不靠谱.看教程一定要找有完整代码的. 解决方案二: 重新核对看看有没有遗漏什么关键步骤.或者重新找个完整的示例代码. 解决方案三: 没有源码的,但是我看到有很多人在转,所以我

产品前端重构(TypeScript、MVC框架设计)

最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的,后端是基于 Asp.net MVC 提供的 REST 数据接口.同时,希望通过这次重构,不但能将其本身重构至可用于快速二次开发的产品,同时还要求该前端代码要保证相对的独立,使得同时可以接入 .NET 和 JAVA 两个不同的后端平台所提供的数据接口.   旧代码的问题 老系统的前端代码如下图所示:

WebApp MVC 框架的开发细节归纳

  在前文<WebApp MVC,"不一样"的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能的时候提供一个正确的方法:共归纳了三点,具体内容如下: 1.URL请求页面 1)使用Nvelocity显示页面 2)第一次页面加载中的Jqueryeasyui控件数据特殊处理   2.Form表单提交数据 1)action提交 2)action提交前进行数据验证 3)使用JQuerye

Struts VS Spring 两种MVC框架比较

比较 基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC 框架有Spring MVC.Tapestry.JSF等.这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica.VRaptor等.这些框架都提供了较好的层次分隔能力.在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高. 如何选择

基于ASP.NET2.0的非HttpModule山寨版MVC框架的实现

在ASP.Net MVC框架中是使用地址拦截的,虽然很好用,但是装起来太大了,配置也麻烦.本文通过代码实践,在ASP.Net2.0框架下实现一套简易的MVC框架.MVC框架难于构建的地方在于Controller与View的分离以及分离后数据可以方便地传输.为了保持代码的简洁,将使用ashx文件作为Controller,用aspx页面作为View. 讲起来比较费劲,把项目文件放上来,而下面只作一个简单的说明.项目是VS2008的项目,大小15K. 下载地址:DotNetMVC.rar 首先构建一个

MVC模式概述

    MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller).MVC模式的目的就是实现Web系统的职能分工.      Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现.     View层用于与用户的交互,通常用JSP来实现.      Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作. MVC模式的