在网站开发中我们经常需要用到表单,那么,在前台页面的表单中提交到后台控制器后,后台控制器如何接收表单提交过来的数据呢?下面我们介绍几种常用的方法。

我们先看看前台页面,这里我们用一个用户名和密码的表单来作为前台页面。

首先,我们新建一个MVC项目,然后添加一个控制器,UserInfoController;在控制器的默认方法index中,我们添加一个视图。这个index视图用来显示我们的前台注册页面。

视图如下:即使一个简单的表单~

代码如下,视图的关键点就是把表单内容提交到哪个控制器的那个方法。也即是通过action的url啦处理。

复制代码
  1. @{
  2. Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html>
  8. <head>
  9. <meta name="viewport" content="width=device-width" />
  10. <title>Index</title>
  11. </head>
  12. <body>
  13. <div>
  14. <!--提交到后台控制器中的GetUserInfo方法中-->
  15. <form action="~/UserInfo/GetUserInfo" method="post">
  16. <table>
  17. <tr>
  18. <!--必须给每一个字段取一个唯一的name,后台控制器通过name来识别-->
  19. <td>
  20. 用户名:<input type="text" name="username" />
  21. </td>
  22. </tr>
  23. <tr>
  24. <td>
  25. 码:<input type="text" name="password" />
  26. </td>
  27. </tr>
  28. <tr>
  29. <td>
  30. <input type="submit" value="提交" />
  31. </td>
  32. </tr>
  33. </table>
  34. </form>
  35. </div>
  36. </body>
  37. </html>
复制代码

接下来我们就需要在后台控制器中处理表单提交过来的信息了。我们先在UserInfo控制器下再写一个方法,用来接收表单传过来的数据。

第一种方法,关键点在于参数名称必须和表单的name是一致的。

复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6.  
  7. namespace MvcDemo.Controllers
  8. {
  9. public class UserInfoController : Controller
  10. {
  11. // GET: UserInfo
  12. public ActionResult Index()
  13. {
  14. return View();
  15. }
  16.  
  17. //参数的名称需要和表单的字段名称一致,这样系统便会直接赋值。
  18. public ActionResult GetUserInfo(string username,string password) {
  19.  
  20. //为了方便演示,我们直接输出这两个值,表示我们已经拿到了数据
  21. return Content(username+"*****"+password);
  22. }
  23. }
  24. }
复制代码

 

 第二种方法,FormCollection包含了表单的所有值,其实就是键值对,键就是表单字段中的name

复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6.  
  7. namespace MvcDemo.Controllers
  8. {
  9. public class UserInfoController : Controller
  10. {
  11. // GET: UserInfo
  12. public ActionResult Index()
  13. {
  14. return View();
  15. }
  16.  
  17. //FormCollection包含了表单的所有值,其实就是键值对,键就是表单字段中的name
  18. public ActionResult GetUserInfo(FormCollection collection) {
  19.  
  20. string username = collection["username"];
  21. string password = collection["password"];
  22. //为了方便演示,我们直接输出这两个值,表示我们已经拿到了数据
  23. return Content(username+"*****"+password);
  24. }
  25. }
  26. }
复制代码

 第三种方法,直接拿值。

复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6.  
  7. namespace MvcDemo.Controllers
  8. {
  9. public class UserInfoController : Controller
  10. {
  11. // GET: UserInfo
  12. public ActionResult Index()
  13. {
  14. return View();
  15. }
  16.  
  17. public ActionResult GetUserInfo() {
  18.  
  19. string username = Request["username"];
  20. string password = Request["password"];
  21. //为了方便演示,我们直接输出这两个值,表示我们已经拿到了数据
  22. return Content(username+"*****"+password);
  23. }
  24. }
  25. }
复制代码

第四种,通过建立一个对象来接受字段信息。只要对象的属性和name对应,系统便会自动赋值。

复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6.  
  7. namespace MvcDemo.Controllers
  8. {
  9. public class UserInfoController : Controller
  10. {
  11. // GET: UserInfo
  12. public ActionResult Index()
  13. {
  14. return View();
  15. }
  16.  
  17. public ActionResult GetUserInfo(User user) {
  18.  
  19. string username = user.Username;
  20. string password = user.Password;
  21. //为了方便演示,我们直接输出这两个值,表示我们已经拿到了数据
  22. return Content(username+"*****"+password);
  23. }
  24. }
  25.  
  26. public class User {
  27.  
  28. private string username;
  29.  
  30. public string Username
  31. {
  32. get { return username; }
  33. set { username = value; }
  34. }
  35.  
  36. private string password;
  37.  
  38. public string Password
  39. {
  40. get { return password; }
  41. set { password = value; }
  42. }
  43.  
  44.  
  45.  
  46. }
  47. }

版权声明:本文为ZaraNet原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ZaraNet/p/9621057.html