`
ljl_xyf
  • 浏览: 620186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第二篇:基于ASP.NET MVC2 创建第一个简单页面

阅读更多

 

摘要
     
本文首先一步一步完成Demo 的第一个页面—— 首页。然后根据实现过程,说明一下其中用到的与ASP.NET MVC 相关的概念与原理。

让第一个页面跑起来
      现在,我们来实现公告系统中的第一个页面—— 首页。它非常简单,只包括所有公告分类的列表,并且每个列表项是一个超链接。其中分类数据是用我们的Mock 组件得到的。实现后界面如下:


 

      在开始之前,我们要删几个东西。因为默认情况下建立一个MVC 项目时里面包含了几个示例页面,我们要做的就是:
      1.
Controllers 文件夹下所有文件删除。
      2.
Views 文件夹下除了Shared 文件夹和Web.config 外的所有文件删除,然后将Shared 文件夹里面的文件删除。
     
完成以上几步后,就可以开始实现第一个页面了。

实现控制器
      Controllers 文件夹下新建一个文件,类型选择“MVC Controller Class ”,名字命名为HomeController.cs 。这就是一个控制器类。然后我们为它编码,具体代码如下:
HomeController.cs:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using MVCDemo.Models;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;

namespace MVCDemo.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ICategoryService cServ = ServiceBuilder.BuildCategoryService();
            ViewData["Categories"] = cServ.GetAll();
            return View("Index");
        }
    }
}
 

 


     
直观看来,这个类不是很复杂。它首先继承了Controller 类。Controller 类是ASP.NET MVC 框架中提供的一个控制器积累,所有我们自定义的控制器类都要继承此基类。然后这个类中有一个Index 方法,返回值类型是ActionResult
     
这里对其中涉及到的概念简单解释一下。首先,控制器类可以说是ASP.NET MVC 的核心类,因为它将处理一切请求,并处理所有页面转发等表示逻辑,这也是使用了ASP.NET MVC 后与传统ASP.NET 应用最大的差别。在传统模式下,一个用户请求的url 将对应一个aspx 文件,而在ASP.NET MVC 下,一个用户请求对应某个控制器类中的一个方法,而这个方法,就叫做一个Action 。至于如何对应的,则是通过对url 的解析。
     
例如,在传统情况下, http://www.my400800.cn/index.aspx 表示请求网站根目录下的Default.aspx 文件。而现在,url 可能变成了这种样子: http://blog.my400800.cn/北京400电话申请/1 。这个意思就是,请求名叫HomeController 控制器类下的Index 方法。一般地,默认情况下,请求url 的格式为 http://localhost/{ControllerName}/{ActionName } 。其中{ControllerName} 是控制器类名“Controller ”前的部分,{ActionName} 就是方法名。
     
当然,这种映射规则是可以更改的,而且请求Action 时也可以传递参数,但这些都是后话,以后再慢慢讨论。

     
下面再深入Index 方法,看看这个Action 都做了什么。它首先调用了业务逻辑组件(当然,是Mock 的),然后将GetAll 返回的公告分类数据赋予ViewData["Category"] ,最后调用View() 方法返回一个ActionResultViewData 是什么呢?你可以把他理解成一个关联数组,它保存需要传给视图的数据。而ViewController 类的一个方法,它返回一个ActionResult 实例。这样说可能有点抽象,其实直观就是将某个视图(一般就是一个aspx 文件)呈现到浏览器中。那么如何知道呈现哪一个视图呢?默认情况下,View 方法会到网站的Views 文件夹下的与控制器类同名的文件夹下寻找与Action 方法同名的视图。例如,HomeControllerIndex 方法就会寻找Views/Home/Index.aspx ,如果找不到,就会到Shared 下寻找,再找不到就报错了。当然,你也可以给View 方法传递一个字符串参数,表示视图名称。

实现视图
      上文说到,当请求 http://localhost/Home/Index 时,HomeControllerIndex 方法会被调用,而Index 方法最后要呈现Views/Home/Index.aspx 视图,所以,我们要在Views 文件夹下建立一个Home 文件夹,然后再新建一个Index.aspx 视图。如果您使用的是VS2008 SP1 ,那么建立视图非常方便,只要在Home 文件夹下右键单击,选Add--->View ,然后指定视图名就可以了。如果不是SP1 的,就新建一个Item ,类型选择“MVC View Page ”。建立好的视图其实就是一个aspx 页面,但是其继承了View 。这也是一个基类,所有视图需要继承它。
     
下面给出Index.aspx 的代码:
Index.aspx:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MVCDemo.Views.Home.Index" %>
<%@ Import Namespace="MVCDemo.Models.Entities" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <% List<CategoryInfo> categories=ViewData["Categories"] as List<CategoryInfo>; %>
    <div>
        <h1>400电话
MVC公告发布系统</h1>
        <ul>
            <% foreach (CategoryInfo c in categories)
               {
                    %>
            <li><%= Html.ActionLink(c.Name, "List/" + c.ID, "Announce") %></li>
            <% } %>
        </ul>
    </div>
</body>
</html>
 

 


     
大约分析一下。刚才说过,Index 这个Action 最后呈现这个aspx 作为视图,而且ViewData 中包含了要给视图传递的数据。在那里,我们将所有公告类别数据放在ViewData["Categories"] 中。这里可以看到,我们将这些数据取出,并用来呈现页面。至于那个Html.Action ,这里先不细说。你只要知道,这个方法可以生成一个链接,其中第一个参数是链接文字,第二个是要链接到的urlAction 名,第三个是要链接到的url 的控制器名。关于这些,我们以后细细讨论。
     
运行这个例子,并将请求url 定位到Home/Index ,就可以看到运行效果。
     
你可能会发现,不需要指定Home/Index ,在输入根目录后就直接呈现了这个页面。其实这是因为在默认的路由配置里,HomeIndex 是默认的控制器名和Action 名。以后我们将会讨论路由问题。

小结
      通过上面的过程,我们第一个ASP.NET MVC 页面已经能呈现出来了。而且不单纯只是一个页面,其中还呈现了业务逻辑组件返回的数据。
     
也许,您对其中许多地方还有困惑。不要着急,在下一篇中,我们做这个系统的步伐先

  • 大小: 15.4 KB
  • 大小: 59 Bytes
分享到:
评论

相关推荐

    Pro ASP.NET MVC 5 (英文pdf+源码)

    Pro ASP.NET MVC 5 APress, 2013 by Adam Free...这是第一本出版的 ASP.NET MVC5 英文版书籍 源码太大, 压缩后约 202M. 依章节分成5个各自独立的压缩包上传. Pro ASP.NET MVC 5 (source code)书附源码Part1( 02_08) ...

    ASP.NET3.5MVC架构与实战

    ASP.NET3.5MVC框架,是微软今后开发Web应用程序的一个主流技术。初学者学习ASP.NET3.5MVC框架,将面对职场上带来众多全新的Web开发职位机遇,成就自我职业人生。 第3大部分,以“实战篇”为线索展开讲解。在体验篇中...

    Pro ASP.NET MVC 5 (source code)书附源码Part1( 02_08)

    Pro ASP.NET MVC 5 (source code)书附源码Part2( 09_11) Pro ASP.NET MVC 5 (source code)书附源码Part3( 12_13) Pro ASP.NET MVC 5 (source code)书附源码Part4( 14_17) Pro ASP.NET MVC 5 (source code)书附源码...

    《[精通ASP.NET.MVC.5框架》高清带书签

    第2章 第一个MVC应用程序 11 2.1 准备Visual Studio 11 2.2 创建新的ASP.NET MVC项目 11 2.2.1 添加第一个控制器 13 2.2.2 理解路由 16 2.3 渲染Web页面 16 2.3.1 创建并渲染视图 16 2.3.2 添加动态输出 20 2.4 创建...

    Pro ASP.NET MVC 5 (source code)书附源码Part2( 09_11)

    Pro ASP.NET MVC 5 (source code)书附源码Part2( 09_11) Pro ASP.NET MVC 5 (source code)书附源码Part3( 12_13) Pro ASP.NET MVC 5 (source code)书附源码Part4( 14_17) Pro ASP.NET MVC 5 (source code)书附源码...

    ASP.NET MVC5 框架揭秘+源码打包下载

    《ASP.NET MVC 5 框架揭秘》以一个模拟ASP.NET MVC内部运行机制的“迷你版MVC框架”作为开篇,其目的在于将ASP.NET MVC真实架构的“全景”勾勒出来。接下来本书以请求消息在ASP.NET MVC框架内部的流向为主线将相关的...

    ASP.NET MVC 3高级编程

    2.4.2 创建第一个(非常简单的)控制器 29 2.4.3 控制器操作中的参数 31 2.5 小结 33 第3章 视图 35 3.1 视图的作用 36 3.2 指定视图 38 3.3 强类型视图 39 3.4 视图模型 41 3.5 添加视图 42 3.5.1 add view...

    Pro ASP.NET MVC 5 (source code)书附源码Part5( 18_27)

    Pro ASP.NET MVC 5 (source code)书附源码Part2( 09_11) Pro ASP.NET MVC 5 (source code)书附源码Part3( 12_13) Pro ASP.NET MVC 5 (source code)书附源码Part4( 14_17) Pro ASP.NET MVC 5 (source code)书附源码...

    ASP.NET MVC 4 开发指南PDF

     《ASP.NET MVC 4 开发指南》共分11章,第1章讲解通用的MVC特性,第2章讲述正确的开发观念,第3章以一个简单的例子带领读者快速上手ASP.NETMVC,第4~8章分别介绍了ASP.NETMVC最重要的核心观念与技术解析,其中包括...

    ASP.NET MVC4开发权威指南(高清版)

     《ASP.NET MVC 4 开发指南》共分11章,第1章讲解通用的MVC特性,第2章讲述正确的开发观念,第3章以一个简单的例子带领读者快速上手ASP.NETMVC,第4~8章分别介绍了ASP.NETMVC最重要的核心观念与技术解析,其中包括...

    ASP.NET MVC2程序开发入门到精通.CHM

    ASP.NET MVC2 技术是微软又一个新的WEB开发技术,也是微软在ASP.NET 平台上有一个产品,这一技术旨在使用MVC架构呈现ASP.NET,给开发者提供更多更好的可定制内容。是广大WEB开发者继ASP.NET WebForm之外的另一好选择...

    ASP.NET MVC4开发指南高清完整PDF版

     《ASP.NET MVC 4 开发指南》共分11章,第1章讲解通用的MVC特性,第2章讲述正确的开发观念,第3章以一个简单的例子带领读者快速上手ASP.NETMVC,第4~8章分别介绍了ASP.NETMVC最重要的核心观念与技术解析,其中包括...

    ASP.NET MVC 5 with Bootstrap and Knockout

    创建第一个项目 分析HomeController 分析View 理解URL结构 小结 第2章Bootstrap介绍 默认菜单 含有下拉列表和搜索框的菜单 按钮 警告框 主题 小结 第3章Knockout.js介绍 安装Knockout.js 基本示例 ...

    二 ASP.NET MVC 第一个程序 hello world

    二 ASP.NET MVC 第一个程序 hello world

    ASP.NET MVC网上图书商城电商网站运营源码

    2项目使用 ASP.NET MVC框架,使用ADO.NET实体数据模型 EF连接数据库,view视图用Razor视图,控制器动作方法使用 Linq to sql 实现与数据库进行数据交互,并完成业务逻辑操作 3页面使用伪静态处理 网站前台 1Web前端...

    ASP.NET MVC4开发指南

    本书共分11章,第1章讲解通用的MVC特性,第2章讲述正确的开发观念,第3章以一个简单的例子带领读者快速上手ASP.NET MVC,第4~8章分别介绍了ASP.NET MVC最重要的核心观念与技术解析,其中包括由与生命周期、模型、...

Global site tag (gtag.js) - Google Analytics