对MVC的理解

今天听了qihangnet对于MVC的讲解,并且安装了AspNetMVCBeta之后,谈一下自己的理解

MVC区别以往的ASP.NET的程序一个很大的地方是ASP.NET将URL映射到磁盘上的一个文件,而MVC模式把URL映射到代码类上。这些类称为“Controllers(控制器)”,它们负责处理到来的请求,处理用户输入和交互,执行基于输入和交互的相应的应用和数据逻辑。然后,一个Controller类一般会调用单独的“视图”组件,该组件负责生成请求的实际的HTML输出。

一、新建一个MVC项目会自动生成三个文件夹和一个默认的页面

Models------------------数据模型类

Views-------------------视图模板类

Controllers--------------控制器类

Default.aspx------------默认的页面,实际上是空的,里面什么也没有

二、系统会默认在Views下面生成一个目录Home,里面两个文件About.aspx和Index.aspx,我们就以这个为例子

在Controllers文件夹下面也默认生成了一个类HomeController.cs,这个类中有两个方法public ActionResult About()和public ActionResult Index()

这样我们可以知道,在Views中的每一个目录在Controllers下都对应一个控制器类,类中有对应于页面的方法

 

三、介绍一下这些方法

public ActionResult Index()
        {
            ViewData["Title"] = "Home Page";
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

这是一个默认的方法,给的两个属性赋值之后,返回一个View();页面上的代码<%= Html.Encode(ViewData["Message"]) %>获得这个值显示出来

当然可以有完成其他功能的一些代码,例如:

public ActionResult Create()
        {
            return View();
        }

        public ActionResult CreateNew()
        {
            //进行一些其他的操作
            return RedirectToAction("Index");
        }

 

完成了某些操作之后返回Index操作,也就是另外一个ControlAction,也就是再进行显示

既然有了Create方法,在Home目录下就要建立一个对应它的文件Create.aspx,

这个地方要注意,我用的是VS2008中文版,在安装了MVC之后,并没有像教程那样可以直接新建MVC的页,这时直接建立页面也可以,但是新建的页面要修改一下,本来是继承自Page类的,现在应该继承System.Web.Mvc命名空间中的ViewPage类,否则编译会出错,提示"must derive from ViewPage"

Index.aspx页面中的代码如下

<a href="/Home/Create">Add New Tasks</a>

对应了Create()方法,也就是对应了一个控制

新建页面Create.aspx

页面中代码

<form id="form1" method="post" action="/Home/CreateNew" runat="server">
        <input type="text" name="task" />
        <input type="submit" value="Add Task" />

    </form>

其中action="/Home/CreateNew",Home代表控制器,CreateNew代表具体的操作(action),可以是读写数据库或者其他的别的操作,然后最后再返回到Index操作

如果要获取input中的输入,只要修改CreateNew方法

public ActionResult CreateNew(string task)
        {
            //进行一些其他的操作
            //进行一些关于task的操作
            return RedirectToAction("Index");
        }

就可以获得task了

如果想要在页面中循环显示数据库中内容,就要在页面的构造函数中获取列表,然后循环显示在页面上,这个部分以后再写

posted @ 2008-10-29 09:54  小鲨  阅读(995)  评论(1编辑  收藏  举报