ASP.NET MVC 中將資料從View傳遞到控制器中的三種方法(表單資料繫結)

來源:互聯網
上載者:User

在ASP.NET MVC架構中,將視圖中的資料傳遞到控制器中,主要通過發送表單實現的.具體使用中,主要使用以下三種方法.

1、通過Request.Form讀取表單資料        2、通過FormCollection讀取表單資料        3、直接讀取表單資料對象

下邊是我學習這些東西時的一點總結

1、通過Request.Form讀取表單資料

     首先定義一個Person類如下:

    public class Person    {        public string FirstName { get; set; }        public string LastName { get; set; }    }在HomeController中定義如下方法,用於接收View傳來的資料:
        [AcceptVerbs(HttpVerbs.Post)]        public ActionResult RequestForm()        {            Person person = new Person();            person.FirstName = Request.Form["FirstName"];            person.LastName = Request.Form["LastName"];            return View(person);        }
這個方法通過Request.Form分別讀取View傳來的兩個文字框"FirstName"和"LastName"中的資料,然後得到Person類執行個體化對象person.
這些資料是HomeView傳來的.實現表單的代碼如下:
    <fieldset>        <p>            <%using (Html.BeginForm("RequestForm", "Home"))              {%>            FirstName:<%=Html.TextBox("FirstName")%><br />            LastName:<%=Html.TextBox("LastName")%>            <input type="submit" name="提交" value="RequestForm" /><br />            <%} %>        </p>    </fieldset>
其中:Html.BeginForm("RequestForm", "Home")是MVC中的FormExtensions類中的擴充方法.第一個參數指明接收表單的Action,第二個參數指明接受表單的Controller.
這條語句指明了Home Controller中的Action RequestForm接受了剛才傳遞來的資料.發送的表單資料兩個文字框:"FirstName"和"LastName"
點擊提交按鈕Submit後的結果如下:

 

可以看到,對象person成功接收了表單傳來的資料.

2、通過FormCollection讀取表單資料

ASP.NET MVC中的FormCollection對象是提交的Form中所有對象的集合.

為了通過FormCollection讀取表單資料,設定如下表單:

 

<fieldset>
    <p>
        <%using (Html.BeginForm("FormCollection", "Home"))
          { %>
        FirstName:<%=Html.TextBox("FirstName")%><br />
        LastName:<%=Html.TextBox("LastName")%><br />
        <input type="submit" name="Submit" value="FormCollection" /><br />
        <%} %>
    </p>
</fieldset>

(Writer的插入代碼塊功能突然就不能用了,鬱悶中.....)
可以看出,處理表單的Action是HomeController中的FormCollection方法.發送的表單依然是來年改革文字框.
FormCollection方法的實現如下:

[AcceptVerbs(HttpVerbs.Post)]
       public ActionResult FormCollection(FormCollection formCollection)
       {
           Person person = new Person();
           person.FirstName = formCollection["FirstName"];
           person.LastName = formCollection["LastName"];
           return View(person);
       }

FormCollection類型是傳入Form中表單值的提供者(MSDN裡邊這麼說的,不是很理解).FormCollection()方法中傳入了FormCollection類型的參數,該參數會自動綁定表單中的所有資料.

通過FormCollection可分別擷取兩個文字框中的資料,然後得到Person類的執行個體化對象person.結果如下:

  

3、直接讀取表單資料對象

為直接讀取表單對象,設定如下表單:

 

<fieldset>
       <p>
           <%using (Html.BeginForm("Person", "Home"))
             { %>
           FirstName:<%=Html.TextBox("FirstName")%><br />
           LastName:<%=Html.TextBox("LastName")%><br />
           <input type="submit" name="Submit" value="Person" /><br />
           <%} %>
       </p>
   </fieldset>

處理該表單的Action是HomeController中的Person方法.發送兩個文字框中的資料.

Person() 的實現如下:

 

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

在上述代碼中,Person()方法中傳入了Person型別參數,其內部讀取了兩個文字框中的"FirstName"和"LastName"中的資料,直接得到Person類的執行個體化對象person.
程式的運行結果如下:

 

直接讀取表對象時,發送表單的文字框必須與資料對象屬性的名稱相一致(不區分大小寫)

Technorati 標籤: MVC,表單資料繫結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.