ASP.NET MVC 入門7、Hellper與資料的提交與綁定

來源:互聯網
上載者:User

本系列文章基於ASP.NET MVC Preview5.

ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些產生HTML代碼的方法,方便我們書寫HTML代碼(有一部分的朋友更喜歡直接寫HTML代碼)。我們也可以利用.NET 3.5的擴充方法來書寫我們自己的Hellper。

例如:

<%=Html.ActionLink("首頁","index","Home")%>

產生的HTML代碼就是:<a href="/Home/Index">首頁</a>。這裡有一點需要注意的就是,Html.ActionLink()和Url.Link()方法產生的URL和你在Global.asax裡面配置的Route的先後順序是有關的。

具體的關於Hellper的各個方法的使用我就不詳細介紹了,你可以參考重典的Asp.net Mvc Framework 系列文章。

我們來實現前面提到的Setting,用於設定Blog的基本設定。我們看一下在Views/Admin/Setting.aspx頁面的代碼:

<p>
    <label for="Name">Blog的名稱</label>
    <%=Html.TextBox("Name")%>
    <%=Html.ValidationMessage("Name")%>
</p>
<p>
    <label for="Description">Blog的簡單描述</label>
    <%=Html.TextArea("Description")%>
    <%=Html.ValidationMessage("Description")%>
</p>
<p>
    <label for="PostsPerPage">每頁顯示的日誌數</label>
    <%=Html.TextBox("PostsPerPage")%>
    <%=Html.ValidationMessage("PostsPerPage")%>
</p> 

 

我們的Setting Action方法是這樣寫的:

注意我們是return View(BlogSettings.Instance);給ViewData.Model傳遞了BlogSettings.Instance。然後運行一下看看:

注意到上面的TextBox都有值了嗎?我們使用了Html.TextBox("Name")而已,並沒有指定值啊?那麼這個值是怎麼自動的綁定上去的呢?注意到前面在Action中我們是return View(BlogSettings.Instance);給ViewData.Model傳遞了BlogSettings.Instance,BlogSettings.Instance.Name和Html.TextBox("Name")的參數"Name"同名,Html.TextBox()方法在調用的時候會調用ViewData.Eval()方法,所以就自動把值綁定上去了。和前一篇文章說過的ViewData.Eval()可以使用"."運算式一樣,Html.TextBox()也同樣可以使用"."運算式,例如:Html.TextBox("Post.Title")也可以自動綁定ViewData.Model.Post.Title值上去。

下面我們來將值提交到Action中並儲存。我們的Form使用了Post回伺服器:

<form id="fields" action="<%=Url.Action("Setting","Admin")%>" method="post">

 

然後我們在Action中進行處理:

[ActionName("Setting"), AcceptVerbs("POST")]
public ActionResult SaveSetting()
{
    //當然你可以這樣取值
    //string name = Request.Form["Name"]; 

    //但我們有更簡便的:
    try
    {
        UpdateModel(BlogSettings.Instance, new[] { "Name", "Description", "PostsPerPage" });
    }
    catch
    {
        return View(BlogSettings.Instance);
    } 

    //在這裡你可能還需要對自訂的商務邏輯進行驗證 

    BlogSettings.Instance.Save();
    return ShowMsg(new List<string>() { "修改設定成功" });

如上代碼所示,我們可以使用UpdateModel()方法直接對Post到伺服器來的Form表單的值賦給指定的對象。對於提交的資料進行商務邏輯的驗證這裡要討論的還是比較多的,國外也有不少文章討論這個的,大家可以搜尋看看。

暫時就寫這麼多吧,想到什麼再補充。Enjoy!Post by Q.Lee.lulu。

本文的Blog程式範例程式碼:4mvcBlog_7.rar

---------------------------------------------------------------------

更多內容,請關注http://blog.51mvc.com/ 和 http://bbs.51mvc.com/

相關文章

聯繫我們

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