光脚丫思考 QQ:524130780
邮箱:524130780@QQ.COM
博客:http://blog.csdn.net/GJYSK
视频演示:http://u.115.com/file/e6dyxh8y
通过使用操作参数可以快速获取的请求数据包括:窗体数据、查询字符串参数值、Cookie。
操作方法是由MVC进行调用的,而操作方法的参数也是由MVC自行传递的。
在MVC传递参数值之前,自然应当首先获得值,否则它要传递什么呢?
而这些参数值便是从请求数据中(窗体数据、查询字符串、Cookie)获取的。
MVC在获取这些参数值时的基本原则是:获取请求数据中的同名HTTP请求值,名称不区分大小写。
一、通过操作方法参数快速获取请求的窗体数据
下面是用来提供输入窗体数据的视图页源代码。
<%@ Page Language="C#"
Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>HandleForm</title>
<link href="../../Content/Site.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<div style="padding: 7px;">
<% using (Html.BeginForm("HandleForm", "Home")) %>
<% { %>
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td>User Name:</td>
<td>
<%= Html.TextBox("UserName", "GJYSK") %>
</td>
</tr>
<tr>
<td>Password:</td>
<td>
<%= Html.Password("Password", "19880109") %>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Login" />
</td>
</tr>
</table>
<% } %>
</div>
</body>
</html>
下面则是通过操作方法的参数快速获取窗体数据的典型代码。
/// <summary>
/// 通过操作方法的参数快速获取传递的窗体请求数据。
/// </summary>
/// <param name="UserName"></param>
/// <param name="Password"></param>
/// <returns></returns>
[HttpPost]
public ActionResult HandleForm(string UserName, string Password)
{
this.ViewData["UserName"] = UserName;
this.ViewData["Password"] = Password;
return View("AccountDetails");
}
在这个代码中并没有使用Request.Form之类的办法来获取请求数据,
而是MVC直接从请求数据中去获取与参数名UserName和Password同名的HTTP请求值,
并且自动将其传递给操作方法HandleForm()。
下面是用来显示获取得窗体数据的视图页源代码。
<%@ Page Language="C#"
Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Account Details</title>
<link href="../../Content/Site.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<div>
User Name:
<%: this.ViewData["UserName"] %>
<br />
Password:
<%: this.ViewData["Password"] %>
</div>
</body>
</html>
二、通过操作方法参数快速获取请求的查询字符串参数值
比如下面的请求URL:
http://localhost:4967/Home/HandleQueryString?UserName=GJYSK&Password=19880109
上面的请求URL可以由HomeController的HandleQueryString操作方法进行处理。
比如下面的代码:
/// <summary>
/// 通过操作方法的参数快速获取传递的查询字符串请求数据。
/// </summary>
/// <returns></returns>
public ActionResult HandleQueryString(string UserName,
string Password)
{
this.ViewData["UserName"] = UserName;
this.ViewData["Password"] = Password;
return View("AccountDetails");
}
同样的,我们也没有使用Request.QueryString之类的办法进行获取,
而是由MVC自动从查询字符串中获取与操作方法参数UserName和Password同名的查询字符串参数值。
快速获取Cookie中的请求值,做法基本上和获取窗体数据、查询字符串参数值相同,
这里就不再多述了。
三、总结
MVC到底是如何获取这些请求数据的,我们暂时不用过多的关心。
也可能这种快速的方式在性能方面未必很快速,
这就有点像我们使用Request来模糊获取请求数据一样。
但它却是使我们在代码编写方面更加的快捷高效,而且看起来也是那么的自在。
试想一想,如果我们要获取的请求数据很多,
对每个请求数据都来个Request访问,岂不是很麻烦?
既然MVC能够自动为我们获取这些数值,为何我们又要自己动手去干一番呢?^_^
详细内容请参看演示视频,代码也和视频一起打包发布了!