主要是為了複習昨天所學習到的mvc的基礎內容,因為昨天還在申請部落格,所以今天補上。
目前主要學習資料是《asp.net mvc4 web 程式設計》
首先先來乙個mvc請求的路徑的流程說明。
上圖說明:
routing路由
mvc裡的url重寫是讓很多新手摸不著頭腦的地方。下邊的圖清楚的解釋了在mvc專案中,乙個請求的運轉週期。不像我們以前直接到檔案的位址一樣的路徑,可以直接指向乙個檔案。而mvc架構的框架決定了他不單單是那樣的,不然就無法做到前台檔案和邏輯**的分離。
這個東西並不在mvc框架的大框架裡,但卻依然是mvc框架中請求的核心部分。他是乙個請求中url重定向的主要途徑,用來分配與指導你所請求的位址應該去**,應該去找哪乙個控制器。他有乙個路由表,表裡記錄的就是這些位址,而匹配上了之後,就會有相應的控制器被找到,繼而進行下一步,進入控制器。
例項講解:
routes.maproute(
name: "default", //
該路由的名稱
url:
"//",
//路由規則
defaults: new
//預設的路由,作用便是如果沒有輸入位址,則直接開啟
home
下的index.aspx
檔案,id
是乙個可選的引數。
);controller控制器
他的任務是該做什麼,卻不是該怎麼做。這是乙個很重要的概念。我們程式的主要邏輯就是放在這裡邊的。他是mvc的一大特色。
控制器檔案放在專案根目錄下的controllers資料夾中,命名規範為 指向的資料夾名字+controller.cs 譬如 homecontroller.cs 指向的就是 /views/home資料夾,其管理的就是該資料夾下的檔案。並且一般來說該資料夾是不會建立子資料夾的,因為如果寫該子資料夾的控制器會比較麻煩,需要配置路由。一般專案裡的檔案就只會建一層資料夾。
如果home資料夾下有檔案index.aspx,那麼在homecontroller.cs中就必須有乙個方法名字叫index,可以是空返回值void,但是空返回值時是不會載入頁面的,因為沒有返回檢視,也沒有指示應該返回那個檢視,將會是空頁面。所以一般返回值都是actionresult型別的。actionrequest型別中,也可以是一些有其他需求的型別,譬如302重定向。那麼就可以使用 return redirect(string
url)來實現。 redirect(string
url)方法返回值是redirectresult,該型別是繼承於actionreturn的,所以可以直接使用。我們著重講一下view()方法。這個方法可以指示返回的檢視名字,譬如在index()方法中返回 view(「about」) 那麼接下來開啟的頁面也許位址還是index的位址,但是內容卻會變成about頁面的內容,因為在返回的時候,指示了要返回about的檢視。
另外,controller中的操作方法,譬如index()方法,是可以接受引數的,引數名字應該是在開啟index.aspx頁面時傳入的引數,譬如 id 或者其他引數,在規定的時候,直接是給定引數型別的,譬如index(int id),這就致使在接收引數的時候,如果傳入的不是乙個int型別的數值,那麼程式將直接報錯。就好比方法是index(int id),呼叫的時候去卻寫的index()一樣。這個時候可以使用mvc裡的特殊語法?。將方法改成index(int? id)這個時候,如果沒有傳入id或者傳入的並不是乙個int型別的引數,那麼引數id將變成乙個null。這也是?在mvc中的重要應用。這個時候index()方法中,就可以直接開始寫程式邏輯**,不用再寫很多的輸入值安全問題驗證**,增加**的可讀性。
viewbag物件。該物件可以自己定義其屬性值,在程式執行到頁面上之後,可以直接使用你在方法中定義的那些屬性值。屬性值名稱自定義,型別是在賦值的時候自動匹配的,定義的是什麼就是什麼。在前台頁面繫結的時候可以直接使用@符號來呼叫或者使用@{}**段來使用。
例:控制器中:viewbag.aaa="測試文字";
前台頁面:@viewbag.aaa
輸出"測試文字"。
控制器中:viewbag.sss=new
string;
前台頁面:@。
bundle.add(new scriptbundle(「~/給這個指令碼檔案的集合命名」)).inclode(「~/跟樣式一樣。」);
在頁面中使用時:
@styles.render("~/content/css") //增加樣式檔案
@scripts.render("~/bundles/modernizr")
//增加指令碼檔案
MVC學習筆記(一)
mvc檔案目錄結構 第一步 瀏覽者 呼叫控制器,對它發出指令 第二步 控制器 按指令選取乙個合適的模型 第三步 模型 按控制器指令取相應資料 第四步 控制器 按指令選取相應檢視 第五步 檢視 把第三步取到的資料按照使用者想要的樣子顯示出來 url形式 index.php?controller 控制器...
MVC學習之路筆記(一)
linq表示式返回值的型別是iqueryable linq to ef 查詢是在資料庫端進行過濾 var temp from u in dbcontext.hksj users where u.id 4 select u 記憶體過濾 資料庫中的所有資料都查詢導程式裡面之後,進行過濾 list集合與i...
MVC4學習筆記(一) 認識MVC
mvc就是為了快速開發出乙個軟體專案,有多快了?你甚至可以在5分鐘內開發出乙個五臟俱全的軟體系統,一點也不假。mvc model view controller,模型 檢視 控制器模式 用於表示一種軟體架構模式。它把軟體系統分為三個基本部分 模型 model 檢視 view 和控制器 control...