MVC 中的Model物件

2021-08-04 07:21:44 字數 1414 閱讀 9217

建立--前台表單資料提交到controller

@model mvc_plug.models.students

@@using (html.beginform())

return

view(students);

}

既然view中不存在將提交的內容繫結到 實體類中,那麼輸入的資料為什麼在action的引數student中可以點出來? 實際上 view 中post提交的資料 是以鍵值對的方式進行儲存,然後對映到提交的action中的 student中,前提是 view中的鍵名(name名字)必須要等於 實體型別的屬性名,否則無法對映 

2.在controller中對應的action的方法體中直接設定引數來接收值 ()

public actionresult create(string stu_name,string tel,string phone)
執行專案,其中stu_name、tel 有值,phone 無值,當然這只是佐證,如果在前台的view 中設定的名字不一樣,後台用student去接收,同樣也會得到空值。

後台傳遞資料到前台

1. 顯示某資料列表 ,同樣是後台controller 將 查詢的結果 賦值給乙個實體類物件,用反射也好,反序也行,再 return view(實體類); 

前台最上面要引用 @model 指向實體類 來接收傳遞的資料,因為是同乙個實體,直接對映到前台,最後view 中進行顯示即可

2. 當然還可以選擇 viewdata 和viewbag 在後台的action中賦值,然後在view中接收,關於這兩者的比較,這裡簡單的整理下

viewdata 的 viewdatadictionary 是乙個特殊的字典類,當在控制器中使用 viewdata["currenttime"] = datetime.now; 其實是將這個值以鍵值對的形式進行儲存

viewbag不再是字典的鍵值對結構,而是dynamic動態型別,它會在程式執行的時候動態解析

mvc 高階程式設計中提高兩者的區別

①只有當要訪問的關鍵字是乙個有效的c#識別符號時,viewbag 才起作用。 

例如,如果在viewdata["key with spaces"]中存放乙個值,那麼就不能使用viewbag訪問。因為這樣根本就無法通過編譯。

②動態值不能作為乙個引數傳遞給擴充套件方法。因為c#編譯器為了選擇正確的擴充套件方法,在編譯時必須知道每乙個引數的真正型別。如果其中任何乙個引數是動態的,那麼就不會通過編譯。

例如,這行**就會編譯失敗:@html.textbox("name",viewbag.name)。要使這行**通過編譯有兩種方法:第一是使用viewdata["name"],第二是把viewbag.name值轉換為乙個具體的型:(string)viewbag.name 。

說白了,viewbag 就是在viewdata的公升級版,兩者只能在action中起作用,當然,兩者的資料是可以相互訪問

MVC中Model和model的區別和使用者

mvc中model和model的區別,它們應該怎麼用呢?使用 model關鍵字可以定義乙個action裡所對應的乙個模型 經常可以叫他實體類 mvc的第乙個字母m是model,承載著view層和controller之間的資料傳輸,是資料傳輸的載體,通過model層,解偶了view層和controll...

SpringMVC中的Model物件

模型物件的作用主要是儲存資料,可以借助它們將資料帶到前端。常用的模型物件有以下幾個 modelandview 繫結資料到檢視 modelmap用於傳遞資料 view物件用於跳轉 return throws exception public modelandview case2 throws exce...

MVC中Model三層的概念

首先解釋三層的概念,action主要負責表示層,biz負責業務邏輯層,dao負責資料訪問層 表示層 主要是接收使用者輸入資料 表單合法性驗證 和 向使用者展示資料結果 頁面跳轉等 的 業務邏輯層 主要是做業務邏輯的,比如資料的計算等 資料訪問層 主要是負責從資料庫讀取資料並以特定的形式返回的 剛開始...