本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1
public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } public ActionResult FirstMethod() { return View(); } public ActionResult LoginPage() { return View(); } [HttpPost] public ActionResult LoginForPost(string name, string password) { //name = Request.Form["name"]; //password = Request.Form["password"]; ViewData["name"] = name; ViewData["password"] = password; return View(); } public ActionResult LoginForGet(string name, string password) { ViewBag.name = name; ViewBag.password = password; return View(); } }
LoginPage页面
@{ ViewBag.Title = "LoginPage"; } <h2>用户登录</h2> <h3>Post方法举例</h3> <form action="/Home/LoginForPost" method="post"> <input type="text" name="name" /> <input type="password" name="password" /> <input type="submit" value="登录" /> </form> <h3>Get方法举例</h3> <form action="/Home/LoginForGet" method="get"> <input type="text" name="name" /> <input type="password" name="password" /> <input type="submit" value="登录" /> </form>
LoginForPost页面代码
@{ ViewBag.Title = "LoginForPost"; String name = ViewData["name"] as String; String password = ViewData["password"] as String; } <h2>你输入的name为@(name) password为@(password)</h2>
LoginForGet页面代码
@{ ViewBag.Title = "LoginForGet"; } <h2><h2>你输入的name为@(ViewBag.name) password为@(ViewBag.password)</h2></h2>
运行程序,输入http://localhost:6187/Home/LoginPage.所得页面如图所示:
我们先测试Post方法。输入Nice
和123456。点击登录:
上述Post方法的测试中,我们在html的表单中输入数据,然后传入控制器Home中的LoginForPost方法,观察LoginForPost使用了[HttpPost]属性进行了标记,该属性表示该方法只有POST请求才能访问,传递过来的参数直接作为了方法的参数,参数名称必须和表单中的input元素的name属性对应。当然
你也可以通过下面的代码直接从请求中获取传递的参数。
name = Request.Form["name"]; password = Request.Form["password"];
在从LoginForPost方法中传递到html页面中。在LoginForPost方法中获取到相关的参数后,有通过ViewData对象传递给页面。在页面我们需要进行强制转换。
String name = ViewData["name"] as String; String password = ViewData["password"] as String;
很简单吧?再看Get方法,Get方法其实和Post方法类似。只是在LoginForGet方法中获取参数后传到到页面我们采用了ViewBag。ViewBag是dynamic类型对象,使用起来更加方便而已。下面在比较一下ViewData和ViewBag的优劣点。
显然,ViewBag不需要进行类型转换,这样大大减少了我们编写代码是出现的bug。
下一篇将介绍,js主要为jquery与ASP.NET
MVC3 方法的交互。