控制器(Controller) – ASP.NET MVC 4 系列
创建一个 ASP.NET MVC 4 Web Application 项目,将程序命名为 MvcMusicStore,如下图:



控制器
MVC 模式中,控制器主要负责响应用户的输入、并且在响应时修改模型、提供相关视图的输出数据。
请求的 URL 首先被路由机制截获,以决定实例化哪一个控制器,调用哪个操作方法,并未该方法提供需要的参数。然后,控制器的方法决定使用哪个视图,并对该视图进行渲染。
添加一个新的 Empty 控制器,命名为 StoreController:


创建 Browse、Details 操作方法,并将 3 个方法的返回值由 ActionResult 改为 String,并运行查看效果:
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()";
}
}

尽管在 ASP.NET MVC 中模型和视图非常有用,但控制器才是真正的核心。每一个请求都必须通过控制器处理,然而其中有些请求是不需要模型和视图的。
修改 Browse 方法如下:
// GET: /Store/Browse?genre=?Disco
public string Browse(string genre)
{
string message = HttpUtility.HtmlEncode("Store.Browse,Genre = " + genre);
return message;
}

HttpUtility.HtmlEncode() 来预处理用户输入,这样能阻止用户用链接向视图注入 JavaScript 代码或 HTML 标记,比如 /Store/Browse?Genre=<script>window.location='http://hacker.example.com'</script>
修改 Details 方法,使其读取和显示一个名为 ID 的输入参数,这里将 ID 值嵌入到 URL 中:
// GET: /Store/Details/5
public string Details(int id)
{
string message = "Store.Details, ID = " + id;
return message;
}

控制器操作感觉就像是 Web 浏览器直接调用控制器类中的方法。类、方法和参数都被具体化为 URL 中的特定路径片段或查询字符串。
控制器(Controller) – ASP.NET MVC 4 系列的更多相关文章
- ASP.NET MVC学习系列(二)-WebAPI请求
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- ASP.NET MVC学习系列(二)-WebAPI请求(转)
转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- 模型(Model)– ASP.NET MVC 4 系列
为 MVC Music Store 建模 在 Models 目录中为专辑.艺术家.流派建模: public class Album { public virtual int ...
- ASP.NET MVC 入门系列教程
ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...
- 表单和 HTML 辅助方法– ASP.NET MVC 4 系列
这里有一个疑问,诸如在文本编辑器中输入 HTML 元素如此简单的任务,也需要任何帮助吗?的确,输入标签名称是很容易的事,但是确保 HTML 页面链接中的 URL 指向正确的位置.表单元素 ...
- ASP.NET MVC深入浅出系列
一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模式,ViewState功不可没,通过的控件的拖拽和绑 ...
随机推荐
- centos7安装jdk8
1.查看是否已经安装了jdk rpm -qa|grep java 表示没有安装jre 如果已经安装请先卸载 2.查看可安装的java环境 yum list java* 3.安装 java-1.8.0- ...
- java基础知识--CLASSPATH
如果在一个类中用到了另外一个类(new了一个新对象). package com.xxx.xxx; public class Cat { } //下面是另外的文件 public class Dog { ...
- 【zz】matlab 求差集
matlab判断2个数组中不同元素--setdiff c = setdiff(A, B) 返回在A中有,而B中没有的值,结果向量将以升序排序返回.在集合论中,c = A - B.A和B也可以是字符串细 ...
- 史上最简单的socket
1. client import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import ja ...
- JS总结 循环 退出循环 函数
while循环 while(条件){条件成立就执行的代码} *一般条件变量需要递增,否则会进入死循环(无限循环),浏览器会崩溃甚至电脑死机 例如,逐行输出1-100的数字 var i = 1; whi ...
- C# 3D效果饼状图的绘制
第一步:放置图表控件 拖动工具栏的Chart控件到界面上 然后选中控件,设置Series属性,将ChartType属性改为pie 第三步:设置3D效果 选择控件,设置ChartArea属性,如下 设置 ...
- SE Homework 1 —An Error Impressed Me
在对两个对象进行比较.判断是否相等时,直接用 == 放在两个对象中间,例如下面的代码: Infor i1 = new Infor(111,"AA"); Infor i2 = new ...
- 如何使用Charles抓包-- 入门篇
下载地址 注意:首先需要下载java的运行环境支持(一般用burp的人肯定也都有装java环境).装好java环境后,可以直接去百度搜索并下载charles的破解版,下载到破解版之后,里面一般会有注册 ...
- background-origin和background-clip的区别
background-origin和background-clip是CSS3内新增加的属性,其实一个是对背景图片的放置,另一个是对背景图片的剪裁. background-origin和backgrou ...
- 项目中创建单元测试—VS2012
我们在每个项目的开发过程中,开发完一个功能,自己首先需要测试一下,VS提供了很方便的测试功能,可以很容易的创建单元测试,但是在VS2012中类名上点击右键没有『创建单元测试』这个菜单,需要先进行设置一 ...