ASP.NET MVC Music Store教程(2):控制器
转自http://firechun.blog.163.com/blog/static/3180452220110272197830/
在基于MVC的Web架构中,URL的映射有一些不同,映射到文件被替换成映射到类中的方法,这些类被叫做的“Controllers”(控制 器),由它们来响应和处理HTTP请求、用户输入、接收和保存数据,并且决定如何将响应发回到客户端(显示HTML,下载文件,重定向URL等)。
添加 HomeController
我们通过添加一个控制器类来开始我们的MVC Music Store应用程序,它将处理链接到网站主页的URL。遵照ASP.NET MVC的命名约定,我们给这个类取名“HomeController”。
在“解决方案资源管理器”中的“Controllers”文件夹上单击右键,选择“添加->控制器”命令:
在“添加控制器”对话框中,将默认名称改为“HomeController“,按“添加”按纽。
这将创建一个新的文件——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方法,我们只需要做两点简单修改
- 修改方法的返回类型,由ActionResult改成string
- 修改return语句返回字符串“Hello from home”
现在,方法看起来是这样:
public string Index() { return "Hello from Home"; }
启动应用程序
原文很详细,从来没用过VS的看原文也知道怎么运行,这里不写了,总之现在可以启动程序,按F5(调试启动)或Ctrl-F5(不调试启动)
我们看到了这个:
OK,相当快捷,我们创建了一个新的Web站点,添加了三行代码,在浏览器中呈现出一段文本。很明显,这只是开始。
(关于VS虚拟IIS服务器的说明文字,不写了)
添加 StoreController
我们添加了一个简单的HomeController实现网站主页,现在,我们添加另一个控制器来实现音乐仓库的浏览功能。仓库控制器将实现下列功能:
音乐仓库的类别列表页面
列出某类别下的所有音乐唱片页面
显示指定音乐唱片的详细信息
(原文很啰嗦,不写了)
重复添加HomeController的过程,将名字改为StoreController。
新的StoreController已经有了Index方法,我们使用Index方法来实现所有类别的列表页面,同时再添加二个方法Browse和Details来实现另外两个功能。
这些Controller(控制器)中的方法——Index、Browser和Detail被称为“Controller Actions”,如同你已经看到的HomeController.Index()动作方法,它们的工作是响应URL的请求并且(通常来说)决定什么样的内容发回到浏览器或用户请求的URL。
我们修改Index()方法,让它返回字符串“Hello from Store.Index()”,对Browse()和Details()方法也做类似的修改以完成StoreController的实现。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcMusicStore.Controllers { public class StoreController : Controller { // // GET: /Store/ public string Index() { return "Hello from Store.Index()"; } // // GET: /Store/Browse public string Browse() { return "Hello from Store.Browse()"; } // // GET: /Store/Details public string Details() { return "Hello from Store.Details()"; } } }
再次启动项目并分别在浏览下列URL:
- /Store
- /Store/Browse
- /Store/Details
访问这些URLs将调用控制器中的动作方法并返回字符串:
太棒了!不过这仅仅是一些固定不变的字符串,我们来让它们变成动态的:从URL中获得一些信息并把它输出到网页上。
首先,我们修改Browser动作方法,让它接收来自URL的参数(QueryString)。我们为动作方法添加一个参数——gener,当动作方法被调用时,ASP.NET MVC会通过URL的QueryString或表单提交自动为它传递一个叫“gener”的参数。
// // GET: /Store/Browse?genre=?Disco public string Browse(string genre) { string message = HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre); return message; }
注意: 我们使用HttpUtility.HtmlEncode方法审核用户输入,这可以防止用户使用类似/Store/Browse?Genre=<script>window.location=’http://hackersite.com’</script>这样的链接对视图进行JavaScript注入攻击user
现在,我们来浏览/Store/Browse?Genre=Disco
下一个修改是让Details动作读取并显示一个名叫“ID”的输入参数。与上一个方法不同的是,我们不想把ID的值放到QueryString参数中,而是直接把它作为URL的一部份,例如:/Store/Details/5
ASP.NET MVC很容易让我们实现这样的想法而不需要做任何设置,ASP.NET MVC的默认路由设置把URL中动作方法后面的部份看成一个名叫“ID”的参数,如果你的动作方法有一个叫“ID”的参数,ASP.NET MVC会自动这部份做为参数传递。
// // GET: /Store/Details/5 public string Details(int id) { string message = "Store.Details, ID = " + id; return message; }
运行应用程序并且浏览/Store/Details/5
看看到目前为止我们做了什么:
- 在VS中创建了一个新的ASP.NET MVC项目
- 讨论了ASP.NET MVC应用程序的基本的目录结构
- 学习了如何使用ASP.NET开发服务器运行Web站点(这部份我没写。。。)
- 创建了两个控制器类:HomeController和StoreController
- 在控制器中添加了动作方法响应URL请求并把文本返回给浏览器
转载于:https://www.cnblogs.com/lonelyxmas/archive/2011/11/17/2252564.html
ASP.NET MVC Music Store教程(2):控制器相关推荐
- ASP.NET MVC Music Store教程(1):概述和新项目
ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...
- ASP.NET MVC 5 入门教程 (2) 控制器Controller
原文:ASP.NET MVC 5 入门教程 (2) 控制器Controller 文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get ...
- ASP.NET MVC 5 学习教程:控制器传递数据给视图
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
- ASP.NET MVC 5 入门教程 (3) 路由route
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...
- ASP.NET MVC 5 学习教程:添加控制器
ASP.NET MVC 5 学习教程:添加控制器 原文 ASP.NET MVC 5 学习教程:添加控制器 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控 ...
- ASP.NET MVC 5 - 将数据从控制器传递给视图
ASP.NET MVC 5 - 将数据从控制器传递给视图 原文:ASP.NET MVC 5 - 将数据从控制器传递给视图 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图. ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...
- ASP.NET MVC 5 学习教程:修改视图和布局页
ASP.NET MVC 5 学习教程:修改视图和布局页 原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图 ...
- ASP.NET MVC 5 学习教程:添加查询
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
最新文章
- cvtvolor()关于HSV输出问题
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
- 解决Flash影片中的图片抖动锯齿
- 带你学python基础:函数是个function?
- u3d:动态的用代码调节材质球的属性
- C#调用API弹出打印机属性对话框
- kata_小规模流处理kata。 第1部分:线程池
- xshell与xftp如何实现相互连接
- 系统内存分布及操作过程
- windows 创建不可见账户
- PyTorch 1.0 中文文档:Windows FAQ
- SpringBoot实现的学生选课管理系统
- 不忘初心Windows11精简版
- python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)
- 解决 C# GetPixel 和 SetPixel 效率问题
- U812.0凭证冲销后前台不能删除问题
- kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
- 在Windows上使用EDA软件——利用WSL安装IC618、SPECTRE181
- 基于java愤怒的小鸟游戏的设计与实现
- 2021-2022学年广州市广大附中九年级第二学期开学考试英语试题
热门文章
- shell语法 06-Linux文本处理-grep
- mysql数据库的设计
- 做小程序的流程总结(基本篇)
- 【转载】安卓开发者在使用deepin15.4时可能会遇到的问题
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何
- android中常见的回调模式
- Android 生成随机数,获取一条随机字符串
- process.cwd __dirname __filename 区别
- 谷歌chrome模拟手机浏览网页:iPhone/Android
- 从底层重学 Java 之 BigInteger 大整数 Gitchat连接