建立一個 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