MVC中url傳值和form傳值
阿新 • • 發佈:2019-01-22
客戶端的form 一般有兩個提交方式 為 GET 和 POST 不常用的有PUT 和DELETE
<form action="/home/index?querystring_d=4" method="post">
<input type="text" name="input_a" id="input_a" value="1a" />
<input type="text" name="input_a" value="10a" />
<input type="text" name="input_b"value="2" />
<input type ="text" name="input_c" value="3" />
<input type="text" name="inputlist_s" value="l1" />
<input type="text" name="inputlist_s" value="l2" />
<input type="text" name="inputlist_int" value="3a" />
<input type="text" name="inputlist_int" value="4" />
<input type ="submit" value="queding" />
</form>
GET:此方法會把action內,問號後的引數先刪除,然後吧 form內的引數放到url中去傳輸.
POST:會把url內的引數傳送,同時在content裡傳送form資料
1.Controller內action中的引數 支援post/get/?引數=1
接收form內資料
接收url內的資料
1傳入資料不重複
public ActionResult Index(int input_a){return View()}
//資料直接獲取,但格式不對應的話會為出錯
2傳入資料重複,比如form內有兩個相同name的input
public ActionResult Index(int input_a){return View()}
//只取第一個獲取的資料,如果過傳入資料格式不正確則值為null (form內有兩個或多個相同name的input)
public ActionResult Index(int[] inputlist_int){return View()}
//如果傳入資料格式只要有一個不正確 inputlist_int就為null 即使裡面有對的資料
2.Request.Querystring[“val”]資料 支援get/?引數=1
-不接收form內資料-
接收url內的資料
1傳入資料不重複
public ActionResult Index(){
{
string input_a_1= Request.QueryString["input_a"];
return View()
}
//傳入資料為string只取第一個獲取的資料
2傳入資料重複,比如form內有兩個相同name的input
public ActionResult Index(){
string input_a_1= Request.QueryString["input_a"];
return View()
}
//傳入資料為string 格式為"1,2,3",值為相同name的值合併並用逗號分割
3.在action中傳入FormCollection資料 支援post
接收form內資料
-不接收url內的資料-
1傳入資料不重複
public ActionResult Index(FormCollection form){
{
string input_a_form = form["input_a"];
return View()
}
//傳入資料為string只取第一個獲取的資料,同Request.Querystring
2傳入資料重複,比如form內有兩個相同name的input
public ActionResult Index(FormCollection form){
string input_a_form = form["input_a"];
return View()
}
//傳入資料為string 格式為"1,2,3",值為相同name的值合併並用逗號分割,同Request.Querystring
4.定義一個Model,在action的引數中使用model傳入資料 支援post/get/?引數=1
接收form內資料
接收url內的資料
public class Mymodel {//model必須為public 它的屬性也必須為public
public string input_a { get; set; }
public string input_b { get; set; }
public string input_c { get; set; }
public int[] inputlist_int { get; set; }
public string querystring_d { get; set; }
}
1傳入資料不重複
public ActionResult Index(Mymodel mymodel){return View()}
//可以傳入通過url和from傳入資料
2傳入資料重複,比如form內有兩個相同name的input
public ActionResult Index(Mymodel mymodel){return View()}
//引數如果不是陣列的話,那麼相同name的input只會傳入第一個name的input值,其他被丟棄
//傳入的資料是陣列的話 [] 的話那麼重複值會直接傳到這個入組裡入上面的public int[] inputlist_int { get; set; }
//如果發現相同name裡存在一個 "字串"的話 其他的為 數字的話,那麼存在一個一個錯誤格式,那麼inputlist_int的值為null.
引數法 model法 querystring法 formcollection法 四中方法那種最好???