Controller

与传统的Web框架,将传入的URL通常映射到磁盘上的文件。例如:一个URL请求“/Products.aspx" 或"/Products.php”是处理一个Products.aspx" 或 "Products.php”的文件

MVC框架传入的URL与映射到服务器代码有所不同,而不是将URL传入文件,而是映射到方式方法或者类,这些类被称为”Controller“,他们负责处理传入的HTTP请求,处理用户输入,检索和保存数据,并且决定将的数据返回到客户端(显示URL,下载文件,跳转到不同的URL,等等)。

添加HomeController

我们将在MVC Music Strore项目中新增一个Controller,用它来处理网站的首页请求,我们遵循ASP.NET MVC的默认命名规则,命名为HomeController.

在Solution Explorer中右键”Controller“文件夹,选择”Add“,选择”Controller“

在弹出的”Add Controller“对话框中,给Controller命名为“HomeController”点击“Add”按钮

接着会创建一个新文件,HomeController.cs 代码如下:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcMusicStore.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
return View();
} }
}

为了尽可能的简单,我们让Index方法简单的返回一个字符串,我们需要做两处修改:

  • 将方法的返回类型修改为String,而不是ActionResult
  • 将返回值语句修改为“Hello from Home”

方法修改后为“

 public string Index()
{
return "Hello from Home";
}

运行应用程序

现在我们运行应用程序,我们可以启动web服务,通过下面任何一种方法:

  • 选择Debug—>开始Debugging菜单
  • 点击工具条上的绿色运行按钮

  • 用键盘上的快捷键。F5

使用上面任何一种方法,都会编译我们的项目,从而启动内置的ASP.NET开发服务器,在屏幕的底部会有通知提示ASP.NET服务器已经启动,并且显示应用程序运行的端口号。

Visual Web Developer将会自动的打开一个浏览器,并且指向我们的请求地址。这将会使我们快速的使用我的程序:

OK,非常简单-我们创建了一个新的网站,添加了三行函数,在浏览器上显示一些文本,一切都很简单,不过这是个开始。

添加一个StoreController

我们添加了一个简单的HomeController来实现我们的首页功能,接下来,我们添加另一个Controller是实现音乐商店的浏览功能,Stroe Controller将支持三个场景:

  • 列出商店中所有的音乐风格的列表
  • 专辑浏览页面,列举出某个流派下的所有专辑
  • 显示某个专辑的明细信息

我们从添加一个新的StoreController开始,如果你没有准备好,先关闭程序,可以直接关闭浏览器或者从”Debug—>Stop Debugging“菜单中选择停止程序。

像添加HomeController一样添加StoreController,在Solution Explorer中右键”Controller“文件夹,选择”Add“,选择”Controller“

StroeController已经有”Index“方法,我们将用”index“方法来实现音乐商店中的所有分类列表,我们将添加额外的两个方法,来实现”浏览“和”明细“。

这些方法(Index,Browse和Details)在控制器内部被称为”Controller Action“,你已经看到在HomeController中的Index()方法,它的工作就是请求URL,确定哪些内容需要被返回到浏览器或。

我们将开始在StroeController的Index()中返回字符串”Hello from stroe.Index()“,再添加相似的方法Browse(),Details().

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcMusinStore.Controllers
{
public class StoreController : Controller
{
//
// GET: /Store/ public string Index()
{
return "Hello from Store.Index()";
} public string Browse()
{
return "Hello from Store.Browse()";
} public string Details()
{
return "Hello from Store.Details()";
} }
}

再次运行项目,访问以下地址

  • /Store
  • /Store/Browse
  • /Store/Details

这些方法将返回我们在Action中返回的字符串

太棒了,但是这些仅仅是固定的字符串,我们让他变得动态一点,从url中获取一些其他信息,再把它们显示在页面上。

首先,我们从Browse Action中获取URL中的参数值,我们可以在Action中增加一个”genre“参数,ASP.NET MVC会自动传递名为genre赋值给它。

 //
// GET: /Store/Browse?genre=Disco
public string Browse(string genre)
{
string message = HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre);
return message;
}

现在我们浏览这个地址:/Store/Browse?Genre=Disco

接下来,我们修改Details Action,用来读取和显示一个输入参数,参数名为ID,不同于之前的方法,这次我们不在请求参数中传递这个参数,而是在请求的 URL 地址中。例如:/Store/Details/5。

ASP.NET MVC中,我们可以不需要配置任何东西,ASP.NET MVC默认路由会Action后面的部分看作名为ID的参数值,如果你的 Action 方法有一个名为 ID 的参数,那么,ASP.NeT MVC 就会自动将这部分作为参数传送给 Action 方法。

 //
// GET: /Store/Details/5
public string Details(int id)
{
string message = "Store.Details, ID = " + id;
return message;
}

现在我们浏览这个地址: /Store/Details/5:

让我们做个总结吧

  • 创建了一个 ASP.NET MVC 项目
  • 讨论了项目的基本文件夹,以及作用
  • 学习了如何运行开发服务器
  • 创建了两个控制器 HomeController 和 StoreController
  • 为控制器增加了 Action 方法。

【翻译】MVC Music Store 教程-概述(三)的更多相关文章

  1. 【翻译】MVC Music Store 教程-概述(一)

    MVC Music Store教程介绍和说明了如何一步步的用ASP.NET MVC 和Visual Web Developer 进行Web开发,教程从最基础的阶段开始,所以对于初级阶段的开发者来说,也 ...

  2. 【翻译】MVC Music Store 教程-概述(二)

    1. 文件->新建项目 软件安装 此篇将从运用免费的Visual Web Developer 2010Express来创建ASP.NET MVC3开始,逐步的添加一些功能来创建一个完整的应用程序 ...

  3. MVC+EF 入门教程(三)

    一.前言 上一节,我们将了生成数据库,那么这张我就将操作设计库. 二.在 Aplication 定义服务 在 Application 中添加文件夹(Blog)和 操作类(BlogServer).实例如 ...

  4. Spring mvc 4系列教程(三)—— Spring4.X的新特性

    1.Spring4.0的新特性 从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持:Spring2.5提出了注解驱动(an ...

  5. MVC+EF 入门教程(一)

    一.前言 本人小白,写这篇博客是为了记录今天一天所学的知识,可能表达不是那么的准确和清楚,欢迎在留言区写下您的建议,欢迎纠错.希望这篇文章对你有所帮助学习 .Net MVC有所帮助.废话不多说了,我们 ...

  6. [译]MVC网站教程(三):动态布局和站点管理

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.   自定义操作结果和控制器扩展 1)   OpenFileResult 2)   ImageR ...

  7. 2017.3.31 spring mvc教程(三)拦截器

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  8. SpringCloud核心教程 | 第三篇:服务注册与发现 Eureka篇

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  9. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

随机推荐

  1. 由chkconfig 引发的联想——怎么查看程序是否已经安装/成功安装

    由chkconfig 引发的联想--怎么查看程序是否已经安装/成功安装 某天需要运行chkconfig,root登录依然找不到该命令. [root@localhost ~]# chkconfig ba ...

  2. S5700交换机配置端口镜像

    S5700交换机配置端口镜像 <Quidway>system-view    //进入系统视图 Enter system view, return user view with Ctrl+ ...

  3. css层叠机制说明

    css通过建立与文档的关联而实施效果.文档结构重要性不言而喻,对于建立良好的内容索引.提高可维护性.较好的可访问性:另,利于css选择器选择.继承机制. 概要地讲,层叠机制是处理对文档上应用样式时解决 ...

  4. tnsping慢的问题解决

    1.检查网络ping主机或IP是否正常,DNS是否设置正确 2. 检查防火墙设置 3.检查listener.log日志,查看是否有大量连接连入. 4.检查listener.log日志文件是否过大,如果 ...

  5. effective c++ 条款06 不想自动生成函数,就明确拒绝

    编辑器会主动的生成三个/五个函数,如果不需要我们应该主动拒绝 使用私有属性来拒绝 ``` include int main() { return 0; } ``` 使用继承的方式来拒绝

  6. A==?B(A,B超级大)

    #include <iostream>#include <string.h>#include <cstring>using namespace std;struct ...

  7. winform制作自定义控件(入门)

    原文链接:http://blog.csdn.net/bychentufeiyang/article/details/7081402   与原文基本一致,只是例子变成VS2012环境,语言采用博主常用的 ...

  8. Linux查看网卡状态

    观看网卡传送.接收数据包的状态 $ netstat  -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK ...

  9. Cacti完全使用手册 ( 让你快速个性化使用Cacti )

    I.总览                                              Cacti 和Nagios的监控体系可以说是使用广泛而且支持丰富的国内外的运维人员都需要掌握的一套监 ...

  10. WebResource.axd文件的配置和使用

    很多ASP.NET server控件都需要另外的外部资源来实现某些功能,WebResource.axd就是将一些js,jpg,bmp等封装或叫植入到类库里面. 使用WebResource.axd需要注 ...