ASP.NET在MVC控制器中獲取Form表單值的方法
阿新 • • 發佈:2020-07-19
在網站開發中我們經常需要用到表單,那麼,在前臺頁面的表單中提交到後臺控制器後,後臺控制器如何接收表單提交過來的資料呢?下面我們介紹幾種常用的方法。
我們先看看前臺頁面,這裡我們用一個使用者名稱和密碼的表單來作為前臺頁面。
首先,我們新建一個MVC專案,然後新增一個控制器,UserInfoController;在控制器的預設方法index中,我們新增一個檢視。這個index檢視用來顯示我們的前臺註冊頁面。
檢視如下:即使一個簡單的表單~
程式碼如下,檢視的關鍵點就是把表單內容提交到哪個控制器的那個方法。也即是通過action的url啦處理。
@{ Layout = null; }<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> <!--提交到後臺控制器中的GetUserInfo方法中--> <form action="~/UserInfo/GetUserInfo" method="post"> <table> <tr> <!--必須給每一個欄位取一個唯一的name,後臺控制器通過name來識別--> <td> 使用者名稱:<input type="text" name="username" /> </td> </tr> <tr> <td> 密 碼:<input type="text" name="password" /> </td> </tr> <tr> <td> <input type="submit" value="提交" /> </td> </tr> </table> </form> </div> </body> </html>
接下來我們就需要在後臺控制器中處理表單提交過來的資訊了。我們先在UserInfo控制器下再寫一個方法,用來接收表單傳過來的資料。
第一種方法,關鍵點在於引數名稱必須和表單的name是一致的。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { public class UserInfoController : Controller { // GET: UserInfo public ActionResult Index() { return View(); } //引數的名稱需要和表單的欄位名稱一致,這樣系統便會直接賦值。 public ActionResult GetUserInfo(string username,string password) { //為了方便演示,我們直接輸出這兩個值,表示我們已經拿到了資料 return Content(username+"*****"+password); } } }
第二種方法,FormCollection包含了表單的所有值,其實就是鍵值對,鍵就是表單欄位中的name
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { public class UserInfoController : Controller { // GET: UserInfo public ActionResult Index() { return View(); } //FormCollection包含了表單的所有值,其實就是鍵值對,鍵就是表單欄位中的name public ActionResult GetUserInfo(FormCollection collection) { string username = collection["username"]; string password = collection["password"]; //為了方便演示,我們直接輸出這兩個值,表示我們已經拿到了資料 return Content(username+"*****"+password); } } }
第三種方法,直接拿值。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { public class UserInfoController : Controller { // GET: UserInfo public ActionResult Index() { return View(); } public ActionResult GetUserInfo() { string username = Request["username"]; string password = Request["password"]; //為了方便演示,我們直接輸出這兩個值,表示我們已經拿到了資料 return Content(username+"*****"+password); } } }
第四種,通過建立一個物件來接受欄位資訊。只要物件的屬性和name對應,系統便會自動賦值。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { public class UserInfoController : Controller { // GET: UserInfo public ActionResult Index() { return View(); } public ActionResult GetUserInfo(User user) { string username = user.Username; string password = user.Password; //為了方便演示,我們直接輸出這兩個值,表示我們已經拿到了資料 return Content(username+"*****"+password); } } public class User { private string username; public string Username { get { return username; } set { username = value; } } private string password; public string Password { get { return password; } set { password = value; } } } }