• Terry的学习笔记ASP.NET MVC 4 HELLO WORLD 从控制器访问模型中的数据


    我们将在接下来创建一个MoviesController类读取movie的数据然后显示在页面上

    在我们创建的HelloWorld工程中创建一个新的控制器MoviesController,创建的方法在前几张中已有提及,与之前有所不同的是,这次我们不用默认空白的模板,具体参数如下

        Controller name: MoviesController. (This is the default. )

        Template: MVC Controller with read/write actions and views, using Entity Framework.

        Model class: Movie (HelloWorld.Models).

        Data context class: MovieDBContext (HelloWorld.Models).

    Views: Razor (CSHTML). (The default.)

    所有的类都是可选的,如果下拉列表中没有需要的类,可以尝试重建整个工程。

    可以看到系统自动创建了控制器和视图(包括增、删、改、查的页面)

    现在可以尝试浏览一下我们的Movie页面,运行我们的网站并来到Movies页面(http://localhost:xxxx/movies)

    我们可以创建一个新的movie数据

    Movie数据将显示为

    我们可以查看详细信息,修改或删除,当然这些都是系统自动生成的

    接下来我们检查一下系统生成的代码,看看它到底做了些什么

    打开Controllers\MoviesController.cs然后看一下index方法, 它调用了在上一章中我们定义的MovieDBContext

    public class MoviesController : Controller
    {
        private MovieDBContext db = new MovieDBContext();

        //
        // GET: /Movies/

        public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

    调用MovieDBContext之后Index方法给视图返回了一个Movies的List对象。

    还记得我们是怎么声明这个控制器的么

    Controller name: MoviesController. (This is the default. )

        Template: MVC Controller with read/write actions and views, using Entity Framework.

        Model class: Movie (HelloWorld.Models).

        Data context class: MovieDBContext (HelloWorld.Models).

    Views: Razor (CSHTML). (The default.)

    一开始我们就声明了调用movie这个数据库模型,然后调用MovieDBContext这个上下文来连接数据库。

    强定义模型类型(Strongly Typed Models)@model关键字

    之前我们也讨论过控制器如何使用ViewBag对象将控制器中的数据传递给视图。ViewBag是一个dynamic对象,它使我们可以很方便的在控制器和视图中间传递数据。除此之外,MVC还允许我们传递强类型数据或对象给视图模板。

    在Controller\MoviesController.cs文件中,Details方法就是用的这么一种传递方式

    public ActionResult Details(int id = 0)
    {
        Movie movie = db.Movies.Find(id);
        if (movie == null)
        {
            return HttpNotFound();
        }
        return View(movie);
    }

    如果数据库中存在对应数据,Movie对象将被传送到Details视图。

    然后我们到Views\Movies\Details.cshtml文件,在顶部使用@model关键字定义对象

    @model HelloWorld.Models.Movie

    @model直接允许视图访问控制器传输过来的Model对象,比如在details.cshtml中,在顶部定义了@model之后,之后的html中就可以通过model来访问控制器传来对象

    <div class="display-label">

             @Html.DisplayNameFor(model => model.Title)

        </div>

    Model对象也可以是一个数据集比如List,在Moviescontroller中的index方法返回的就是一个List对象

    public ActionResult Index()

            {

                return View(db.Movies.ToList());

            }

    这时在视图顶部就需要这么声明model对象了

    @model IEnumerable<HelloWorld.Models.Movie>

    然后就想index.cshtml中所用的

    接下来我们来看数据库,其实VS2012已经为你生成了一个Movies.mdf文件,在工程下面的app_data文件夹下面,我们可以通过VS2012 数据库组件对这个数据库进行操作。

  • 相关阅读:
    SQLSERVER排查CPU占用高的情况
    bootstrap布局两列或者多列表单
    ASP.NET Redis 开发
    .NET 环境中使用RabbitMQ
    EasyNetQ介绍
    .Net使用RabbitMQ详解
    ASp.net中Froms验证方式
    全国-城市-百度地图中心点坐标
    IIS7.0下 HTTP 错误 404.15
    asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
  • 原文地址:https://www.cnblogs.com/terryxym/p/2830964.html
Copyright © 2020-2023  润新知