控制器(Controller) – ASP.NET MVC 4 系列

       建立一个 ASP.NET MVC 4 Web Application 项目,将程序命名为 MvcMusicStore,以下图:浏览器

image

image

image

控制器

       MVC 模式中,控制器主要负责响应用户的输入、而且在响应时修改模型、提供相关视图的输出数据。app

       请求的 URL 首先被路由机制截获,以决定实例化哪个控制器,调用哪一个操做方法,并未该方法提供须要的参数。而后,控制器的方法决定使用哪一个视图,并对该视图进行渲染spa

       添加一个新的 Empty 控制器,命名为 StoreController:3d

image

image

       建立 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()";
    }
}

image

       尽管在 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;
}

image

       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;
}

image

       控制器操做感受就像是 Web 浏览器直接调用控制器类中的方法。类、方法和参数都被具体化为 URL 中的特定路径片断或查询字符串。get

相关文章
相关标签/搜索