1. 程式人生 > >MVC中url傳值和form傳值

MVC中url傳值和form傳值

客戶端的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法 四中方法那種最好???