对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了
如果想要在页面中循环显示数据库中内容,就要在页面的构造函数中获取列表,然后循环显示在页面上,这个部分以后再写