ASP.NET MVC Framework體驗(3):表單提交

來源:互聯網
上載者:User
概述

在前面的兩篇文章總,我們分別做了一個簡單的ASP.NET MVC的例子和進行資料的綁定,在本文中,將通過ASP.NET MVC Framework實現表單的提交,你可以看到,在這裡有多種方法來擷取表單資料,可以自動對應、通過Request對象擷取等。

實現新增資料

1.這裡我們還採用上一篇做過的Blog樣本(在後面的文章中,我將一直使用該樣本),在這之前,先修改一下上次樣本中的BlogRepository,為其增加一個Add方法:

public void Add(Post post){    BlogDataContext db = new BlogDataContext();    db.Posts.InsertOnSubmit(post);    db.SubmitChanges();}

2.在Index視圖中添加一個可以轉向建立Post頁面的連結,使用ActionLink()方法:

<h2>ASP.NET MVC Framework Sample</h2><hr /><%=Html.ActionLink("Home", new { action="Index"})%> |<%=Html.ActionLink("New Post", new { action="New"})%>
<div>    <%foreach (Post post in ViewData)      { %>    <div class="postitem">        <strong>Title</strong>:<%=Html.Encode(post.Title) %></br>        <strong>Author</strong>:<%=Html.Encode(post.Author) %></br>        <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br>        <strong>Content</strong>:<%=Html.Encode(post.Description) %></br>    </div><br />    <% } %></div>

在上面的代碼中,第四行我們添加了New Post超連結,並指定該連結的action為New,這裡我們也可以通過action名稱來指定:

<h2>ASP.NET MVC Framework Sample</h2><hr /><%=Html.ActionLink("Home", "Index")%> |<%=Html.ActionLink("New Post", "New")%><div>    <%foreach (Post post in ViewData)      { %>    <div class="postitem">        <strong>Title</strong>:<%=Html.Encode(post.Title) %></br>        <strong>Author</strong>:<%=Html.Encode(post.Author) %></br>        <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br>        <strong>Content</strong>:<%=Html.Encode(post.Description) %></br>    </div><br />    <% } %></div>

3.編寫控制器中的New action代碼,這裡代碼非常簡單,因為我們只需要轉向建立Post視圖就可以了,並不需要其他的操作:

[ControllerAction]public void New(){     //轉向新頁面    RenderView("New");}

4.編寫New視圖,在這裡我們將提供一些表單,供使用者輸入資料,編寫HTML代碼如下:

<h2>New Post</h2><hr /><div class="postitem">    Title:<input id="title" name="title" type="text" /><br /><br />    Author:<input id="author" name="author" type="text" /><br /><br />    Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br />    <input type="submit" value="Save" /></div>
接下來添加一個HTML的form元素,並指定它的action為我們要增加新的Post的action,這裡假定為Add,並且指定method為Post,最終我們完成的代碼應該看起來如下所示:
<h2>New Post</h2><hr /><div class="postitem">    <form action="Add" method="post">        Title:<input id="title" name="title" type="text" /><br /><br />        Author:<input id="author" name="author" type="text" /><br /><br />        Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br />        <input type="submit" value="Save" />    </form></div>
擷取表單資料

完成了上面的步驟之後,就可以編寫控制器中Add action的代碼,在這裡需要擷取表單的資料,並將其寫入到資料庫,ASP.NET MVC Framework中提供了多種方法擷取表單資料。

1.自動對應

使用這種方法,我們只需要把方法的參數定義表單的名稱,ASP.NET MVC Framework將會自動協助我們進行映射,直接把表單的資料賦值給form的Action所對應的方法參數上,如下代碼所示:

[ControllerAction]public void Add(string title, string author, string description){    Post post = new Post();    post.Title = title;    post.Author = author;    post.Description = description;    post.PubDate = DateTime.Now;    BlogRepository repository = new BlogRepository();    repository.Add(post);    RedirectToAction("Index");}

2.第一種方法在使用時,如果介面上表單過多,會使方法的參數變大,這樣好像就變成了重構中所說的“髒代碼”,為瞭解決這個問題,我們還可以使用表單變數來擷取表單的值,使其代碼看起來如下所示:

[ControllerAction]public void Add(){    Post post = new Post();    post.Title = Request.Form["title"];    post.Author = Request.Form["author"];    post.Description = Request.Form["description"];    post.PubDate = DateTime.Now;    BlogRepository repository = new BlogRepository();    repository.Add(post);    RedirectToAction("Index");}

上面這兩種方法都是擷取表單的值,並將其儲存到資料庫中,轉向Index action進行處理。

3. 在MVCToolkit中還提供了一些擴充的方法,可以用來擷取表單的值,後面的文章再說。

配置直接選取

這一步什麼時候都不能忘,這次我們修改一下,變為controller/action的形式,代碼如下:

void Application_Start(object sender, EventArgs e) {    // Code that runs on application startup    RouteTable.Routes.Add(                new Route                {                    Url = "[controller]/[action]",                    Defaults = new { action = "Index" },                    RouteHandler = typeof(MvcRouteHandler)                });}
完成資料增加

上面的樣本運行後如下所示,首先是Index視圖中有一個New Post連結:

 

點擊New Post後:

 

提交之後,增加一條新的Post,並轉向Index視圖:

 

結束語

關於在ASP.NET MVC Framework中實現表單的提交簡單樣本到這裡就結束,相信通過前面三篇簡單的文章,大家對ASP.NET MVC Framework已經有了一個大概的認識,後面我會寫一些深入一點的文章以及MVCToolkti提供的一些HTML Helper方法:)

範例程式碼下載:/Files/Terrylee/MVCDemo03.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.