新聞中心
對于ASP.NET MVC,很多開發(fā)者持歡迎的態(tài)度。不過在吸引了更多人目光的同時,我們也應該看到有很多開發(fā)人還不太了解ASP.NET MVC。本文的作用在于給大家一個簡單易懂的ASP.NET MVC教程。

創(chuàng)新互聯(lián)建站從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元白沙黎族做網(wǎng)站,已為上家服務,為白沙黎族各地企業(yè)和個人服務,聯(lián)系電話:18980820575
ASP.NET MVC 1.0發(fā)布有段兒時間了,剛發(fā)布不久的時候試用了一下,做了一個簡單的BBS,現(xiàn)在總結(jié)一些經(jīng)驗和小技巧和大家分享。網(wǎng)上關(guān)于ASP.NET MVC的系列教程有好幾個,所以就不從頭開始介紹了,結(jié)尾處給大家推薦了幾個鏈接,需要的話可以從頭系統(tǒng)的看看。
1、ASP.NET MVC介紹及與ASP.NET WebForm的區(qū)別
#T#
剛開始為了搞清楚ASP.NET MVC到底值不值得用,翻來覆去想了一個多禮拜,看了好多資料和評論,***決定還是值得一用。MVC不是一個簡單的設(shè)計模式,更像一種架構(gòu)模式,或者一種思想,剛開始一聽MVC想到的就是模板引擎,NVelocity,StringTempleate等,但感覺如果只是為了用模板這種獨立的前臺設(shè)計方式,沒必要用ASP.NET MVC,大多數(shù)情況用Repeaterk控件和自定義控件兒就能做到,而且ASPX頁面上本來就可以寫c#代碼,一些比較復雜的界面表現(xiàn)邏輯用普通的WebForm也能實現(xiàn),其實ASP.NET MVC的VIEW部分默認用的還是aspx的解析器。ASP.NET MVC的View部分讓你寫一些大型的,布局復雜的網(wǎng)站更方便,更底層,更直接,很受對css,js很熟悉的開發(fā)者的歡迎。
當你理解了MVC的思想后,會發(fā)現(xiàn)ASP.NET MVC的好處真正在于Controller和Action,你寫一段代碼能很明確的知道是在處理什么請求,畢竟web程序處理的是一個一個的http請求,不像windows桌面程序,基于事件驅(qū)動更直觀。ASP.NET MVC的Controller讓你寫一些web api或者rest風格的接口很方便(以前可能要用HttpHandler來做),這些Controller只負責提供數(shù)據(jù)(具體的ActionResult類,如JsonResult,JavascriptResult等)給使用者,比如一個Ajax調(diào)用,或者View層。
至于Model層,我看網(wǎng)上大多數(shù)人是用LINQ TO SQL實現(xiàn)的,畢竟使用起來很簡單,設(shè)計好表,用LINQ 設(shè)計器往vs.net里一拖就能用了。而且本身就是強類型的,再在自動生成的代碼上加一些分部方法,就可以實現(xiàn)數(shù)據(jù)的有效性驗證等。還有就是對LINQ做的Model進行數(shù)據(jù)持久化和查詢的時候更方便,直接用DbContext一個類,增刪改查全能搞定。
有得就有舍,ASP.NET MVC雖然提供了先進的思想和一些便利,但ASP.NET以前的一些東西不能用了,比如以前自己寫的一些服務器控件兒不能用了,WebPart,皮膚,各種數(shù)據(jù)綁定控件等都不能用了,但Master頁還能用,Asp.net Ajax control toolkit(服務端)也不能用了,但asp.net ajax library(客戶端js庫)還能繼續(xù)使用,基于頁面和目錄的授權(quán)不能用了(因為現(xiàn)在沒頁面,只有view了),但MemberShip和Forms身份驗證還是支持的。標準WebForm的生命周期變了,好些事件沒了,現(xiàn)在你可以寫一些攔截器(Action攔截器、Result攔截器和Exception攔截器)來影響請求的處理過程,還有一些區(qū)別,總之失去的東西,都有變通的方法能找吧回來。
2、linq to sql如何獲取插入語句產(chǎn)生的標識列的值?
其實很簡單,把對象插入數(shù)據(jù)庫后,直接取值就行了,如下BBSPost是一個實體類,其中PostID在數(shù)據(jù)庫里是自增列。
- var db = new BBSDbContext(connstr);
- BBSPost post = new BBSPost()
- post.PostUser = User.Identity.Name;
- post.PostTime = DateTime.Now;
- db.BBSPosts.InsertOnSubmit(post);
- db.SubmitChanges();
- int postid = post.PostID; //這里就能取到標識列的值。
3、ASP.NET MVC里在請求提交后如何后維持滾動條位置?
在WebForm里再簡單不過了,在web.config里配置MaintainScrollPositionOnPostBack=true就搞定了,但在MVC里就不行了。我們知道了原理后,可以自己實現(xiàn),其實就是在提交表單或者滾動條滾動的事件里捕獲當前滾動條的位置,把數(shù)值放在一個隱藏域里,提交給服務端,服務端應答后,從隱藏域里取出滾動條的位置,用js操縱滾動條滾動到上次的位置。
我們先在View里寫一個隱藏域,如下
- <%= Html.Hidden("scroll", ViewData["scrool"])%>
然后在處理客戶端請求的action里給ViewData里存儲一下提交上來的值(從FormCollection里?。?。
- public ActionResult reply(BBSPost post, FormCollection coll) {
- ...
- ViewData["scroll"] = coll["scroll"];
- ...
- return View("show_post",posts);
- }
這樣頁面提交后隱藏域里就會保存著提交前滾動條的位置,然后我們在用JQuery寫一些邏輯實現(xiàn)最終的效果。


咨詢
建站咨詢