光脚丫学ASP.NET MVC(0010):通过操作参数更快捷访问请求数据

光脚丫思考  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能够自动为我们获取这些数值,为何我们又要自己动手去干一番呢?^_^

详细内容请参看演示视频,代码也和视频一起打包发布了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值