1.1 action 和 method 特性
表单是包含输入元素的容器,其中包含按钮、复选框、文本框等元素。表单中的这些输入元素使得用户能够向页面中输入信息,并把输入的信息提交给服务器。数据的提交依赖于 action 和 method。
action 特性用以告知 web 浏览器信息发送到哪里,所以 action 包含一个 URL。这里的 URL 可以是相对的,也可以使绝对的。
- 1 "http://www.bing.com/search">
- 2 "q" type="text" />
- 3 "submit" value="Search!">
- 4
上面的代码中不包含 method 特性。发送信息时,默认是 "get",所以上面的代码等同于:
- 1 "http://www.bing.com/search" method="get">
- 2 "q" type="text" />
- 3 "submit" value="Search!">
- 4
当用户使用 HTTP GET 请求提交表单时,浏览器会提取表单中输入元素的 name 特性值及其相应的 value 特性值,并将他们放入查询字符串中。换句话说,上面的表单将把浏览器导航到 URL(假设用户正在搜索关键词 love):http://www.bing.com/search?q=love
1.2 GET 方法还是 POST 方法
如果不想让浏览器把输入值放入查询字符串中,而是想放入 HTTP 请求的主体,就可以给 method 特性值赋值 post。尽管这样也可以成功的向搜索引擎发送 POST 请求并能看到响应的结果,但是相对而言,使用 HTTP GET 请求会更好一些。
通常情况下,GET 请求用于读操作,POST 请求用于写操作(通常包括更新、创建和删除)
(1)用搜索表单搜索音乐
html:
- 1 <form action="/Home/Search" method="get">
- 2 <input type="text" name="q" />
- 3 <input type="submit" value="Search">
- 4 </form>
在 HomeController 控制器中实现 Search 方法。
- 1 public ActionResult Search(string q)
- 2 {
- 3 var albums = storeDB.Albums
- 4 .Include("Artist")
- 5 .Where(a => a.Title.Contains(q))
- 6 .Take(10);
- 7 return View(albums);
- 8 }
(2)通过计算 action 特性值来搜索音乐
更好的办法是通过计算 action 特性的值来搜索音乐。有一个 HTML 辅助方法可以代劳自动完成这个计算,如下所示:
- 1 @using ( Html.BeginForm("Search" , "Home" ,FormMethod.Get)) {
- 2 <input type="text" name="q" />
- 3 <input type="submit" value="Search">
- 4 }
BeginForm HTML 辅助方法利用路由引擎找到 HomeController 控制器的 Search 操作。它在后台使用 GetVirtualPath 方法,该方法在 RouteTable 的 Routes 属性中——在 global.aspx 中,Web 应用程序注册所有路由的位置。
来源: http://www.bubuko.com/infodetail-1973980.html