摘要
本文首先一步一步完成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()
方法返回一个ActionResult
。ViewData
是什么呢?你可以把他理解成一个关联数组,它保存需要传给视图的数据。而View
是Controller
类的一个方法,它返回一个ActionResult
实例。这样说可能有点抽象,其实直观就是将某个视图(一般就是一个aspx
文件)呈现到浏览器中。那么如何知道呈现哪一个视图呢?默认情况下,View
方法会到网站的Views
文件夹下的与控制器类同名的文件夹下寻找与Action
方法同名的视图。例如,HomeController
的Index
方法就会寻找Views/Home/Index.aspx
,如果找不到,就会到Shared
下寻找,再找不到就报错了。当然,你也可以给View
方法传递一个字符串参数,表示视图名称。
实现视图
上文说到,当请求
http://localhost/Home/Index
时,HomeController
的Index
方法会被调用,而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
,这里先不细说。你只要知道,这个方法可以生成一个链接,其中第一个参数是链接文字,第二个是要链接到的url
的Action
名,第三个是要链接到的url
的控制器名。关于这些,我们以后细细讨论。
运行这个例子,并将请求url
定位到Home/Index
,就可以看到运行效果。
你可能会发现,不需要指定Home/Index
,在输入根目录后就直接呈现了这个页面。其实这是因为在默认的路由配置里,Home
和Index
是默认的控制器名和Action
名。以后我们将会讨论路由问题。
小结
通过上面的过程,我们第一个ASP.NET MVC
页面已经能呈现出来了。而且不单纯只是一个页面,其中还呈现了业务逻辑组件返回的数据。
也许,您对其中许多地方还有困惑。不要着急,在下一篇中,我们做这个系统的步伐先
- 大小: 15.4 KB
- 大小: 59 Bytes
分享到:
相关推荐
ASP.NET MVC是一种用于构建动态网站和Web应用程序的框架,它由微软开发,基于模型(Model)、视图(View)和控制器(Controller)的设计模式。本项目实例是一个商品信息管理系统,旨在帮助开发者理解MVC架构的核心概念和...
ASP.NET MVC4是一种基于微软.NET Framework的开源web应用程序框架,专为构建可维护性和测试性的动态网站而设计。它结合了MVC(Model-View-Controller)设计模式、ASP.NET的功能性和HTML5的新特性,提供了高效且灵活...
ASP.NET MVC4是一种基于Microsoft .NET Framework的轻量级、模型-视图-控制器(MVC)框架,用于构建可维护、高性能的Web应用程序。在VS2010集成开发环境中,结合SQL2008数据库,我们可以创建出功能丰富的Web应用。...
ASP.NET MVC6是微软开发的一款用于构建Web应用程序的框架,它是ASP.NET Core的一部分,具有高度模块化、跨平台和高性能的特性。ASP.NET MVC6在ASP.NET MVC5的基础上进行了重大改进,以适应现代Web开发的需求。 1. *...
ASP.NET MVC框架是微软推出的一款用于构建Web应用程序的开源框架,它基于模型-视图-控制器(Model-View-Controller)设计模式。在本课程中,我们将深入探讨ASP.NET MVC的正式版本,这个版本通常代表着稳定性和性能的...
##### 第二部分:ASP.NET 平台基础 (Part 2: The ASP.NET Platform Foundation) - **第 3 章:ASP.NET 生命周期 (Chapter 3: The ASP.NET Life Cycles)** - **主要内容**:详细介绍 ASP.NET 请求处理过程中的各个...
《Professional ASP.NET MVC 2》是一本深入探讨ASP.NET MVC框架第二版的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等多位业界专家共同编写。这本书旨在帮助读者全面理解并...
ASP.NET MVC框架基于这个模式,提供了丰富的特性来支持Web开发。以下是一些关键知识点: 1. **路由系统**:ASP.NET MVC使用路由引擎来解析HTTP请求,并将其映射到相应的控制器和操作方法。开发者可以通过自定义路由...
ASP.NET MVC3 是微软开发的一款用于构建Web应用程序的框架,它是基于ASP.NET平台的一个轻量级、模型-视图-控制器(MVC)架构。MVC模式允许开发者将业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护性。...
《Professional ASP.NET MVC 2》是一本专注于微软ASP.NET MVC框架的专业书籍,旨在帮助开发者深入理解和熟练运用这一强大的Web应用程序开发技术。ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller)...
ASP.NET MVC4是微软开发的一款用于构建Web应用程序的框架,它是基于ASP.NET平台的,专为构建可测试、模块化和高性能的Web应用程序而设计。这个"asp.net mvc4+汉化包"是为了方便中国开发者使用,提供了中文语言支持。...
ASP.NET MVC5是一个强大的Web应用程序开发框架,由微软公司提供,它结合了ASP.NET、Model-View-Controller(MVC)设计模式和 razor 视图引擎,为开发者提供了构建高效、可测试和易于维护的Web应用的能力。...
### ASP.NET MVC 2优化详解 #### 前言与概述 《Professional ASP.NET MVC 2 Optimize》是一本深入探讨ASP.NET MVC 2框架的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等...
通过本章的实际操作,读者可以亲身体验如何创建一个简单的ASP.NET MVC应用程序,从而对框架的基本结构和工作流程有一个直观的认识。 #### 第二部分:ASP.NET MVC 3详解 第二部分则深入探讨了ASP.NET MVC 3框架的...
【ASP.NET MVC购物商城网站...以上就是基于ASP.NET MVC的购物商城网站的主要知识点,这个项目涵盖了Web开发的多个方面,包括前端交互、后端逻辑、数据库操作、安全性以及性能优化等,是学习和实践Web开发的优秀实例。
这个“asp.net mvc3 第一个demo”是开发者使用Visual Studio 2010创建的一个初步示例项目,旨在帮助初学者理解并实践ASP.NET MVC3的基本概念和功能。 MVC模式是一种流行的软件架构,它将应用程序分为三个主要组件:...
ASP.NET MVC 3 是微软开发的一个用于构建动态网站的开源框架,它基于ASP.NET平台,提供了模型-视图-控制器(MVC)架构模式,旨在提高Web应用的可测试性和可维护性。在这个安装包中,包含的主要文件是"AspNetMVC3...