ASP.NET MVC控制器Controller中参数

前述文章参见:ASP.NET MVC控制器Controller

  • 绪论
    之前的控制器返回的均为常量字符串,接下来展示如何获取请求传来的参数,而返回“动态”的字符串。

  • 可以在操作方法Browse添加一个string类型的genre参数,以实现获取请求传来的字符串值。当这个方法被调用时,ASP.NET MVC可以自动将名为“genre”的查询字符串或者表单提交参数传递给Browse操作方法。

    public string Browse(string genre)
    {
        string message = HttpUtility.HtmlEncode("Store.Browse,Genre=" + genre);
        return message;
    }
    

    可以浏览到/Store/Browse?genre=4查看效果(如下图),应该返回Store.Browse,Genre=4。注意:这里之所以使用HttpUtility.HtmlEncode预处理用户输入,这是为了防止用户注入Javascript或者HTML代码。


  • 类似上面修改Browse方法那样,修改Details方法,添加一个int类型的id参数,如下:

    public string Details(int id)
    {
        string message = HttpUtility.HtmlEncode("Store.Details,ID=" + id);
        return message;
    }
    

    可以浏览到/Store/Details/4查看效果,可以发现Details方法获取到了请求传来的参数4,这是因为ASP.NET MVC的默认路由规定,将操作方法名称后面的URL的字符作为一个参数,该参数的名称为ID,如果方法有名为ID的参数,那么ASP.NET MVC将自动将这些字符作为参数传递过来。


  • 总结
    1.路由将URL映射到控制器中的方法,并且ASP.NET MVC使得路由的实现细节对开发者是透明的
    2.控制器将视图作为字节序列(通常为HTML)返回给浏览器
    3.实际上,控制器很少返回原始的字符串,它通常返回合适的ActionResult来处理类似HTTP状态码,HTML视图这样的事项