ASP.NET MVC 入门7、Hellper与数据的提交与绑定
本系列文章基于ASP.NET MVC Preview5.
ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些生成HTML代碼的方法,方便我們書寫HTML代碼(有一部分的朋友更喜歡直接寫HTML代碼)。我們也可以利用.NET 3.5的擴(kuò)展方法來(lái)書寫我們自己的Hellper。
例如:
<%=Html.ActionLink("首頁(yè)","index","Home")%>生成的HTML代碼就是:<a href="/Home/Index">首頁(yè)</a>。這里有一點(diǎn)需要注意的就是,Html.ActionLink()和Url.Link()方法生成的URL和你在Global.asax里面配置的Route的先后順序是有關(guān)的。
具體的關(guān)于Hellper的各個(gè)方法的使用我就不詳細(xì)介紹了,你可以參考重典的Asp.net Mvc Framework 系列文章。
我們來(lái)實(shí)現(xiàn)前面提到的Setting,用于設(shè)置Blog的基本設(shè)置。我們看一下在Views/Admin/Setting.aspx頁(yè)面的代碼:
<p>????<label?for="Name">Blog的名稱</label>
????<%=Html.TextBox("Name")%>
????<%=Html.ValidationMessage("Name")%>
</p>
<p>
????<label?for="Description">Blog的簡(jiǎn)單描述</label>
????<%=Html.TextArea("Description")%>
????<%=Html.ValidationMessage("Description")%>
</p>
<p>
????<label?for="PostsPerPage">每頁(yè)顯示的日志數(shù)</label>
????<%=Html.TextBox("PostsPerPage")%>
????<%=Html.ValidationMessage("PostsPerPage")%>
</p>?
?
我們的Setting Action方法是這樣寫的:
注意我們是return View(BlogSettings.Instance);給ViewData.Model傳遞了BlogSettings.Instance。然后運(yùn)行一下看看:
注意到上面的TextBox都有值了么?我們使用了Html.TextBox("Name")而已,并沒(méi)有指定值啊?那么這個(gè)值是怎么自動(dòng)的綁定上去的呢?注意到前面在Action中我們是return View(BlogSettings.Instance);給ViewData.Model傳遞了BlogSettings.Instance,BlogSettings.Instance.Name和Html.TextBox("Name")的參數(shù)"Name"同名,Html.TextBox()方法在調(diào)用的時(shí)候會(huì)調(diào)用ViewData.Eval()方法,所以就自動(dòng)把值綁定上去了。和前一篇文章說(shuō)過(guò)的ViewData.Eval()可以使用"."表達(dá)式一樣,Html.TextBox()也同樣可以使用"."表達(dá)式,例如:Html.TextBox("Post.Title")也可以自動(dòng)綁定ViewData.Model.Post.Title值上去。
下面我們來(lái)將值提交到Action中并保存。我們的Form使用了Post回服務(wù)器:
<form?id="fields"?action="<%=Url.Action("Setting","Admin")%>"?method="post">?
然后我們?cè)贏ction中進(jìn)行處理:
[ActionName("Setting"),?AcceptVerbs("POST")]public?ActionResult?SaveSetting()
{
????//當(dāng)然你可以這樣取值
????//string?name?=?Request.Form["Name"];?
????//但我們有更簡(jiǎn)便的:
????try
????{
????????UpdateModel(BlogSettings.Instance,?new[]?{?"Name",?"Description",?"PostsPerPage"?});
????}
????catch
????{
????????return?View(BlogSettings.Instance);
????}?
????//在這里你可能還需要對(duì)自定義的業(yè)務(wù)邏輯進(jìn)行驗(yàn)證?
????BlogSettings.Instance.Save();
????return?ShowMsg(new?List<string>()?{?"修改設(shè)置成功"?});
}?
如上代碼所示,我們可以使用UpdateModel()方法直接對(duì)Post到服務(wù)器來(lái)的Form表單的值賦給指定的對(duì)象。對(duì)于提交的數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯的驗(yàn)證這里要討論的還是比較多的,國(guó)外也有不少文章討論這個(gè)的,大家可以搜索看看。
暫時(shí)就寫這么多吧,想到什么再補(bǔ)充。Enjoy!Post by?Q.Lee.lulu。
本文的Blog程序示例代碼:4mvcBlog_7.rar
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC 入门7、Hellper与数据的提交与绑定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《最终幻想7 重生》明年冬登陆PS5 故
- 下一篇: 小米13、13 Pro现身:配置大曝光!