建立一个 ASP.NET MVC 4 Web Application 项目,将程序命名为 MvcMusicStore,以下图:浏览器
MVC 模式中,控制器主要负责响应用户的输入、而且在响应时修改模型、提供相关视图的输出数据。app
请求的 URL 首先被路由机制截获,以决定实例化哪个控制器,调用哪一个操做方法,并未该方法提供须要的参数。而后,控制器的方法决定使用哪一个视图,并对该视图进行渲染。spa
添加一个新的 Empty 控制器,命名为 StoreController:3d
建立 Browse、Details 操做方法,并将 3 个方法的返回值由 ActionResult 改成 String,并运行查看效果:code
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 中模型和视图很是有用,但控制器才是真正的核心。每个请求都必须经过控制器处理,然而其中有些请求是不须要模型和视图的。blog
修改 Browse 方法以下:ip
// 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 中的特定路径片断或查询字符串。get