ASP.NET MVC實踐系列-表單處理
其實這應該算是一個很簡單的話題,但是由於webform為我們封裝的太多,很多人對這部分的原理並不是特別清楚,搞得這個表單提交在ASP.NET MVC中好像很神祕似得,下面我就來幫大家揭揭祕,當然高手就別看了會浪費你的時間的。
一、基礎知識
HTTP請求有兩種方式GET與POST,理論上說,GET是從伺服器上請求資料,POST是傳送資料到伺服器。事實上,GET方法是把資料引數佇列(query string)加到一個URL上,名字和值是一一對應的。比如說,name=lfm。在佇列裡,各組資料用一個&符號分開,空格用+號替換,特殊的符號轉換成十六進位制的程式碼。因為這一佇列在URL裡邊,這樣佇列的引數就能看得到,可以被記錄下來,或更改。通常GET方法還限制字元的大小(我測試了一下大概4083,大於4083直接被截斷,不報錯 )。事實上POST方法可以沒有限制的傳遞資料到伺服器,使用者在瀏覽器端是看不到這一過程的。接下來要講的這個表單提交使用的就是post方式。
二、CheckBox
1、Html.CheckBox:這是ASP.NET MVC中提供的一個Helper,它會生成一個input-checkbox和一個同名的input-hidden,比方說我們的view為:
程式碼
{%>
則會生成:
程式碼
為什麼要有這麼一個input-hidden呢,我們都知道checkbox在提交時如果不選中則將不被提交到伺服器端,所以有時我們可能希望如
果不選中也提交到伺服器端,這個input-hidden就是幹這個的,不過這裡實現的有點蹩腳,當選中時會有兩個同名的表單項,一個值
為TRUE,一個值為FALSE。
當controller為如下時:
public ActionResult HtmlCheckBox(FormCollection formCollection)
{
return Content(Request["lfm1"]);
}
如果選中checkbox,則得到“true,false”,如果不選中checkbox則得到“false”。如果你需要用到不選也要提交的情況可以使用
這個helper,但一般還是推薦大家直接使用。
2、
我們先新增一個View:
檢視
{%>
這裡要注意所有的Input的name都相同,Html.BeginForm("TestCheckBox", "Home")的意思是當此表單提交的時候會提交到
HomeController的TestCheckBox這個Action方法中。我們新增這個方法:
Action
public ActionResult TestCheckBox(int[] lfm)
{
string t="";
foreach (var item in lfm)
{
t = t + item.ToString();
}
return Content(t);
}
為了簡單,TestCheckBox方法的引數名需要與input的名字相同,於是mvc自動幫我們將你選擇的checkbox的value值匹配到引數陣列
中,當然你可以通過Request獲得,不過這樣的話需要你自己進行處理。
三、RadioButton
RadioButton的用法就比較簡單了,我們舉個簡單的例子:
View:
View
{ %>
Controller:
程式碼
public ActionResult HtmlRadioButtonTest()
{
return View();
}
public ActionResult RadioResult()
{
return Content(Request["lfm"]);
}
得到的結果就是你選中RadioButton的值。這個helper和 版本用法是基本一樣的。
四、應用
View:
程式碼
NewsList
選擇 | Author | Title | CreateTime |
---|---|---|---|
Controller:
程式碼
public ActionResult NewsList()
{
return View(ListNews.GetList());
}
public ActionResult NewsListResult(int[] ID)
{
string result = "選中的ID";
foreach (var item in ID)
{
result = result + "," + item;
}
return Content(result);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-620998/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASP.NET Web API實踐系列05,訊息處理管道ASP.NETWebAPI
- ASP.NET MVC 異常處理ASP.NETMVC
- ASP.NET MVC實踐系列11-FCKEditor和CKEditor的使用ASP.NETMVC
- ASP.NET MVC系列:AreaASP.NETMVC
- ASP.NET MVC系列:ModelASP.NETMVC
- Asp.net Core MVC 程式的國際化處理ASP.NETMVC
- Node.js 系列 - 搭建路由 & 處理表單提交Node.js路由
- ASP.Net請求處理機制初步探索之旅(5):ASP.Net MVC請求處理流程ASP.NETMVC
- Web 應用程式中提交表單時處理 GIF 動畫的最佳實踐Web動畫
- Asp.Net Mvc5表單提交之List集合ASP.NETMVC
- Spring系列(七) Spring MVC 異常處理SpringMVC
- PHP表單處理指南PHP
- ASP.NET MVC中Area分層模組處理大解密ASP.NETMVC解密
- php表單處理-143PHP
- React 如何來處理表單React
- ASP.NET:MVC中檔案上傳與地址變化處理ASP.NETMVC
- Django高階表單處理與驗證實戰Django
- DBA實踐---壞塊處理
- 異常處理最佳實踐
- Asp.Net MVC 系列--基礎篇(2)ASP.NETMVC
- Asp.Net MVC系列--基礎篇(3)ASP.NETMVC
- 在ASP.NET MVC中使用Knockout實踐05,基本驗證ASP.NETMVC
- ASP.NET MVC 4 開發指南 實踐的那些坑們ASP.NETMVC
- JavaScript學習14:表單處理JavaScript
- Asp.net MVC中表單驗證ASP.NETMVC
- 基於 Python 的簡單自然語言處理實踐Python自然語言處理
- MVC字串處理及MVC@RenderSection小計MVC字串
- 在ASP.NET MVC中使用Knockout實踐03,巧用data引數ASP.NETMVC
- 在ASP.NET MVC中使用Knockout實踐09,自定義繫結ASP.NETMVC
- Asp.Net MVC 系列--進階篇之FilterASP.NETMVCFilter
- 【ASP.NET Core】MVC模型繫結:非規範正文內容的處理ASP.NETMVC模型
- ASP.NET MVC 第五個預覽版和表單提交場景ASP.NETMVC
- ASP.NET MVC中簡單使用AutofacASP.NETMVC
- 簡單實現批處理
- C#MVC基類實現事務處理思路C#MVC
- 在ASP.NET MVC中使用Knockout實踐01,繫結Json物件ASP.NETMVCJSON物件
- ASP.NET Web API實踐系列01,以ASP.NET Web Form方式寄宿ASP.NETWebAPIORM
- 批處理最佳實踐 - Vlad Mihalcea