VS2010 mvc3.0学习入门-1

来源:互联网 发布:苹果网络恢复系统 编辑:程序博客网 时间:2024/06/05 19:59
    在本教程中,你将学会如下内容:
如何创建一个ASP.NET MVC的工程。
如何创建ASP.NET MVC的控制器(controller)与视图(view)。
如何使用Entity Framework code-first 范例来创建一个新的数据库。
如何获取和显示数据。

如何编辑数据并且进行数据的有效性验证。

ActionResult 类
封装一个操作方法的结果并用于代表该操作方法执行框架级操作。
操作方法通过执行工作并返回操作结果来响应用户输入。 操作结果表示框架将代表操作方法执行的命令。 ActionResult 类是操作结果的基类。

ViewResult 类
表示一个类,该类用于使用由 IViewEngine 对象返回的 IView 实例来呈现视图。
ViewResult 类实现了抽象 ViewResultBase 类,并用于呈现视图。 此类包含用于查找要呈现的视图的方法和用于执行结果的方法。 此类还包含用于为应用程序标识要呈现的视图的属性、视图的名称、母版视图的名称、视图数据、临时数据以及视图引擎集合。





1.MVC设计模式
Model 是指 要处理的业务代码和数据操作代码
View 视图 主要是指的 跟用户打交道 并能够展示数据
Controller 看成是 Model和View的桥梁


优点:
1.1.可以降低 Model(业务/数据) 和 视图(视图) 的耦合关系
1.2.可以复用视图(同样的数据,可以使用不同的视图以 不同的图标展示出来!)

2.DotNetMVC 框架:约定大于配置

2.1控制器类命名 以 Contoller结尾:HomeController
2.2控制器类将会产生一个 与之同名的 在Views文件夹下的 文件夹:~/View/Home
2.3控制器里的 Action方法,也可在视图文件夹下生成一个同名的视图,如:Index.cshtm

3.EF(EntityFrameWork)
ORM(对象关系映射框架/ 数据持久化框架)
根据 实体对象 操作  数据表中数据的一种面向对象的操作框架。
底层也是调用 Ado.Net


1.创建你的第一个应用程序 ->新ASP.NET MVC 3 项目->Razor视图

                               第二节 添加一个控制器

2.添加一个控制器   MVC的全称为model-view-controller(模型-视图-控制器)

创建一个控制器(controller)类 在解决方案资源管理器中,鼠标右击Controllers文件夹,并且点击添加-〉控制器,

代码清单2-1 在控制器中创建方法
public class HelloWorldController : Controller
{
    //
    // GET: /HelloWorld/
     public ActionResult Index() //默认的
        {
            return View();
        }
    public string Index()
    {
        return "这是我的<b>默认</b>action...";
    }
    //
    // GET: /HelloWorld/Welcome/
    public string WelCome()
    {
        return "这是我的Welcome方法...";
    }
}

  接下来,让我们修改Welcome方法,以便在URL地址栏中可以传递一些参数给该方法(例如:/HelloWorld/Welcome?name=Scott&numtimes=4)。修改后的代码如下所示。注意这里我们使用了C#的可选参数,当URL地址中没有使用numtimes参数时,该参数被默认设定为1。

//GET:/“http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4”
public string Welcome(string name,int numTimes=1)
{
    return HttpUtility.HtmlEncode("Hello " + name + ",NumTimes is:" + numTimes);
}

在ASP.NET MVC中,可以根据浏览器中的输入地址来调用不同的控制器或控制七种不同的方法。ASP.NET MVC的默认的映射逻辑使用如下所示的格式来决定应该调用什么控制器或控制器中的什么方法。
/[Controller]/[ActionName]/[Parameters]

                                                    -第三节 添加一个视图

3.1我们在HelloWorldController类的Index方法中添加使用一个视图

在Index方法中点击鼠标右键,然后点击“添加视图”,将会弹出一个“添加视图”对话框

  在该对话框中,不做任何修改,直接点击添加按钮,观察解决方案资源管理器中,在MvcMovie项目下的Views文件夹下创建了一个HelloWorld文件夹,并且在该文件夹中创建了一个Index.cshtml文件,同时该文件呈打开状态

代码清单3-1 Index.cshtml视图模板文件
@{
    ViewBag.Title = "首页"; //浏览器标题
}
<h2>首页</h2>                           
<p>这是我的第一个视图模板</p>

3.2  修改视图,修改应用程序的页面布局

Views文件夹下的Shared文件夹下的_Layout.cshtml文件。该文件被称为布局页面,位于公有文件夹Shared下,被所有其他网页所共用。


ASP.NET <wbr>MVC3 <wbr>快速入门-第三节 <wbr>添加一个视图

。请注意文件底部的“@RenderBody()”代码行。。@RenderBody()是一个占位符,代表了所有你创建出来的实际应用的视图页面

此处,我们的数据(“这是我的第一个视图模板”文字)是被直接书写在文件中的,也就是说我们使用到了MVC应用程序的“V”(视图View)与“C”(控制器Controller)。接下来,我们讲解一下如何创建一个数据库并从该数据库中获取模型数据。

3.3  将控制器中的数据传递给视图

视图模板将生成一个动态的响应流,这意味着我们需要将数据从控制器类传递给视图以便利用该数据来生成该响应流。我们在该控制器类中将视图模板所需要的数据送入一个ViewBag对象中,该对象可以被视图模板直接接收。

public ActionResult Welcome(string name, int numTimes = 1)
        {
            ViewBag.Message = "Hello " + name;
            ViewBag.NumTimes = numTimes;
            return View();
        }

现在ViewBag对象中已经包含了数据,它将被自动传递给视图,我们需要创建一个Welcome视图模板在“调试”菜单中,点击“生成 MvcMovie”将应用程序进行编译,接下来,在Welcome方法中点击鼠标右键,然后点击“添加视图”。

代码清单3-5 修改后的Welcome.cshtml文件
@{
    ViewBag.Title = "Welcome";
}
<h2>Welcome</h2>
<ul>
@for (int i = 0; i < ViewBag.NumTimes; i++)
{
    <li>@ViewBag.Message</li>
}
</ul>

运行应用程序,并且在地址栏中输入“http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4”

ASP.NET <wbr>MVC3 <wbr>快速入门-第三节 <wbr>添加一个视图

我们使用了模型“M”的一种方式,但是不是数据库的方式。在下一节中,我们将创建一个数据库,并且介绍如何对该数据库中的数据进行处理

                                                                               第四节 添加一个模型                                                                    


4.1  利用NuGet来安装EFCodeFirst安装完毕后,点击close按钮。我们的MvcMovie工程中会自动加载EntityFramework程序集,其中包含了EFCodeFirst类库。(通过命令行安装)

4.2  添加模型类

鼠标右击Models文件夹,点击“添加”菜单下的“类”,Models文件夹下添加了一个Movie.cs类定义文件

在Movie.cs文件中追加如下所示的五个属性。
public class Movie
{
    public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
}

我们将利用Movie类来代表数据库中的movie(电影)。每一个Movie对象的实例对应于数据表中的一行,Movie类中的每一个属性被映射到数据表的每一列。
    在同一个Movie.cs文件中,追加如下所示的MovieDBContext类。
public class MovieDBContext : DbContext 
{
    public DbSet<Movie> Movies { get; set; } 
}

  MovieDBContext类代表了Entity Framework中的movie数据库的上下文对象,用来处理数据的存取与更新。MovieDBContext对象继承了Entity Framework中的DbContext基础类。为了能够引用DbContext类,你需要在Movie.cs文件的头部追加如下所示的using语句。
using System.Data.Entity;

如果要从数据库中存取数据,类似以上所示的代码是必须要写的。在下一节中,我们将要创建一个新的MoviesController类,用来显示数据库中的数据,并且允许用户创建一个新的movie(电影)的列表。