视图向控制器传参
当需要从视图传递简单的数据至控制器中时,我们可以使用Request对象来完成。它是最原始的视图和后台之间的数据传递方式。
我们可以先创建一个HomeController.cs控制器,然后在里面再创建一个对应方法的视图文件,视图的文件名要求跟方法名一致。
1、在test.cshtml中,添加如下表单代码
我们需要弄一个简单的表单用于控制器接收数据然后处理数据返回结果。
@{ Layout = null; } @* 使用TempData变量 *@ <h1>张三,@ViewBag.notice , @TempData["nick"]</h1> <form action="" method="post"> 我的名字: <input type="text" name="name" value="" /> <p> <input type="submit" value="提交" /> </p> </form> <h1>你的名字是:@ViewBag.name</h1>
对应的控制器方法和代码(需要知道的是,当请求是post请求时,会触发[HttpPost]对应的方法)
//初始化加载方法 public ActionResult test(string name) { //提示 ViewBag.notice = "你好啊~"; return View(); } //接收post请求 [HttpPost] public ActionResult test() { string name = Request.Form["name"]; //接收post参数 ViewBag.name = name; return View(); }
加载页面时,访问/Login/test显示的效果:
输入信息,然后点击提交后,得到的结果:
须知:红线的地方没有显示“你好啊~”,是因为访问的是post请求的test()方法。
2、GET方式传参的数据接收
在控制器中,如果获取GET请求过来的数据,可以使用Request.QueryString[]的方式接收参数。
在控制器的使用方法:
//初始化加载方法 public ActionResult test(string name) { string age = Request.QueryString["age"]; //接收get参数 ViewBag.age = age; //提示 ViewBag.notice = "你好啊~"; return View(); }
对应的视图代码如下:
@{ Layout = null; } @* 使用TempData变量 *@ <h1>张三,@ViewBag.notice , @TempData["nick"]</h1> <form action="" method="post"> 我的名字: <input type="text" name="name" value="" /> <p> <input type="submit" value="提交" /> </p> </form> <h1>你的名字是:@ViewBag.name</h1> @* 显示年龄 *@ <p>我的年龄:@ViewBag.age</p>
运行方法如下,当地址没有参数时,不会显示结果。
我们在地址设置年龄age,然后会得到如下的结果:
3、可以在方法设置参数名,用于接收
如果我们不想使用Request对象接收表单数据。也可以在控制器中的方法中设置参数接收。
在LoginController.cs控制器新增show方法,用于接收参数username和pwd。
//方法参数的格式接收参数,在方法中设置的是默认值为空,如果必须传参,可以把=""去除。 public ActionResult show(string username="",string pwd="") { ViewBag.username = username; ViewBag.pwd = pwd; return View(); }
对应的视图代码:(下面的form表单方法是get,不是post)
@{ Layout = null; } <form action="" method="get"> 用户名: <input type="text" name="username" value="" /> <br /> 密码: <input type="text" name="pwd" value="" /> <br /> <input type="submit" value="登录" /> </form> <hr /> <h1>用户名:@ViewBag.username === 密码:@ViewBag.pwd</h1>
运行效果:
传参后,得到的效果:
点击登录,得到下面的结果:
作业:尝试使用方法参数的数据接收方法,实现提交注册数据到后端接收。
需要购买本课才能留言哦~