1、關於C# MVC之間的各種關系。
第一個問題,這里的控制器名稱,不需要加上controller的後綴,也就是在你的控制器名稱去掉後面的controller放在這里就行了
第二個問題,跳轉頁面是由名稱決定的,
public ActionResult Index()
{
return View();
}
就跳轉到Index頁面。
第三個問題,最後一個參數給控制器方法傳值
比如:
return RedirectToAction("action","controller",new MyModel {})
return RedirectToAction("action","controller",new {參數1=xx,參數2=xxx})
2、MVC 可以有多個項目合起來嗎?例如要做一個cms的話,一個項目是後台,另一個項目用來產生前台
當然可以了,將數據部分作為單獨的項目獨立出來,然後兩邊都引用就行了
3、mvc和cms有什麼區別呢?mvc能不能替代cms?
這位童鞋!我想你是弄錯了吧。 MVC是一種開發模式,M-模型 V-視圖,C-控制器的意思。而CMS是"內容管理系統"的統稱。就是網站管理系統,這類系統很多 http://.baidu.com/question/224910579.html這邊有詳細解釋。
4、現在很多公司直接用cms,那還學框架,mvc有什麼作用?剛學有這個疑問,哪位知道?謝謝。
cms功能有限只適合簡單的內容發布,資料庫擴展性不強。而實際上很多系統都有個性需求,需要重新開發、學框架是為了更科學的開發。
5、MVC 和web MVC ,Spring web MVC三者的關系與區別。希望盡量詳細些~
1. MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用於組織代碼用一種業務邏輯和數據顯示分離的方法,這個方法的假設前提是如果業務邏輯被聚集到一個部件裡面,而且界面和用戶圍繞數據的交互能被改進和個性化定製而不需要重新編寫業務邏輯MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
mvc是一種泛指的設計模型,只要是這種設計方式的,均可以稱之為mvc結構。
2.web mvc 范圍更小一些,主要指web類應用的。無關平台,無關語言。例如:java的struts框架,
ASP.NET MVC Framework. PHP的Zend Framework框架等等。。。
3.spring mvc 是一種mvc的具體實現。類似於上面提到的struts框架。均是對servlet的一種封裝。
但是比struts更輕量,更靈活。
6、php框架,cms和mvc他們是什麼關系?
CMS是Content Management System的縮寫,意為"內容管理系統"。
MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。
可以看出2者之間沒有任何關系。不過目前流行的php cms都採用了mvc設計模式,比如phpcms,dedecms等。
7、ASP.NET MVC 和Entify Framework 之間的關系
這個有兩種方式,一種是Code first,這種情況下,實體是自己創建,然後映射到資料庫,生成相應的數據表。另外一種就是通過資料庫映射生成C#代碼,即生成edmx文件,這些是自動生成的,其中不僅有C#代碼,還有很多增刪改查的方法,還有數據的關系圖等。
第二種情況下,映射完成之後,是非常不推薦去刪除或增加代碼,比如,我想添加實體的驗證條件,怎麼辦?或者是我添加生成的數據欄位,難道我在這個代碼中去添加?這些做法都不可取,容易發生錯誤。
解決方案是,無論欄位或其他條件是否相同,都建議添加相應的實體,添加的這些實體就可以作為與資料庫所映射的數據「通信」。如果你要添加驗證,就在這個實體上的欄位上驗證就可以了。Controller或視圖中用的就是我們建立的這個實體。而他們之間的通信就比較簡單了,如下所示:
var resultList = db.ZZ_Car_Licence_Forwarder.Select(x => new CarLicenceForwarderItem
{
Id = x.Seq,
DateCreate = x.Create_Date,
Days = x.Days,
CarLicence = x.Car_Licence,
TailLicence = x.Tail_Licence1,
TailLicence2 = x.Tail_Licence2,
Driver = x.Driver,
DriverTel = x.Driver_Tel,
RcvGroupId = x.RCV_GroupId,
BegDate = x.Begin_Dt,
EndDate = x.End_Dt,
DateTimeStart = x.Begin_Times,
DateTimeEnd = x.End_Times
})
.AsQueryable();
其中,db是我定義的資料庫對象,CarLicenceForwarderItem就是我們自己定義的實體,這樣resultList得到的就是我們自定義實體的集合。
8、mvc和j2ee的關系是什麼啊
MVC模式是一種開發J2EE企業級應用的時候最常用的開發模式,是把程序分為3個層次去編,對應MVC依次就是模型層(Model)顯示層(View)控制層(Controller)有的大型項目也會把這個MVC更加細化,來抽取出更多的層次感,這樣有利於項目開發。
用這些架構都是為了實現鬆散耦合,每個功能單獨形成模塊,組合使用,這也就是現在流行的SOA。
J2EE三層:表示層,業務邏輯層,持久化層;一般都是由框架實現。
MVC 模型視圖控制器,主要說的是表示層。
兩個層次上的劃分,沒有相關性。
9、三層架構和mvc模式有什麼關系
三層架構和MVC是有明顯區別的,MVC應該是展現模式(三個加起來以後才是三層架構中的UI層) 三層架構(3-tier
application)
通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了「高內聚,低耦合」的思想。
1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。
3、數據訪問層(DAL):該層所做事務直接操作資料庫,針對數據的增添、刪除、修改、更新、查找等。
MVC是
Model-View-Controller,嚴格說這三個加起來以後才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。
mvc可以是三層中的一個表現層框架,屬於表現層。三層和mvc可以共存。
三層是基於業務邏輯來分的,而mvc是基於頁面來分的。
MVC主要用於表現層,3層主要用於體系架構,3層一般是表現層、中間層、數據層,其中表現層又可以分成M、V、C,(Model View
Controller)模型-視圖-控制器
曾把MVC模式和Web開發中的三層結構的概念混為一談,直到今天才發現一直是我的理解錯誤。MVC模式是GUI界面開發的指導模式,基於表現層分離的思想把程序分為三大部分:Model-View-Controller,呈三角形結構。Model是指數據以及應用程序邏輯,View是指
Model的視圖,也就是用戶界面。這兩者都很好理解,關鍵點在於Controller的角色以及三者之間的關系。在MVC模式中,Controller和View同屬於表現層,通常成對出現。Controller被設計為處理用戶交互的邏輯。一個通常的誤解是認為Controller負責處理View和Model的交互,而實際上View和Model之間是可以直接通信的。由於用戶的交互通常會涉及到Model的改變和View的更新,所以這些可以認為是Controller的副作用。
MVC是表現層的架構,MVC的Model實際上是ViewModel,即供View進行展示的數據。
ViewModel不包含業務邏輯,也不包含數據讀取。
而在N層架構中,一般還會有一個Model層,用來與資料庫的表相對應,也就是所謂ORM中的O。這個Model可能是POCO,也可能是包含一些驗證邏輯的實體類,一般也不包含數據讀取。進行數據讀取的是數據訪問層。而作為UI層的MVC一般不直接操作數據訪問層,中間會有一個業務邏輯層封裝業務邏輯、調用數據訪問層。UI層(Controller)通過業務邏輯層來得到數據(Model),並進行封裝(ViewModel),然後選擇相應的View。
MVC本來是存在於Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。
MVC如何工作
MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。
視圖V
視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia
Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services.
如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據並允許用戶操縱的方式。
模型M
模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。
控制器C
控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後再確定用哪個視圖來顯示返回的數據。
模型Model 模型是應用程序的主體部分。模型表示業務數據,或者業務邏輯. 實現具體的業務邏輯、狀態管理的功能。 視圖View
視圖是應用程序中用戶界面相關的部分,是用戶看到並與之交互的界面。 就是與用戶實現交互的頁面,通常實現數據的輸入和輸出功能。
控制器controller
控制器工作就是根據用戶的輸入,控制用戶界面數據顯示和更新model對象狀態。起到控制整個業務流程的作用,實現View層跟Model層的協同工作。
3層架構指:表現層(顯示層)
業務邏輯層 數據訪問層(持久化)如果大家非要「生搬硬套」把它和MVC扯上關系話那我就只能在這里"強扭這個瓜"了即: V
3層架構中"表現層"aspx頁面對應MVC中View(繼承的類不一樣) C
三層架構中"表現層"的aspx.cs頁面(類)對應MVC中的Controller,理解這一點並不難,大家想一想我們以前寫過的
Redirect,當然它本身就是跳轉了一些鏈接頁面,而MVC中的Controller要做的更爽,它控制並顯示輸出了一個視圖。即然所起到的作用都是對業務流程和顯示信息的控制,只不過是實現手段不同而已。
M
3層架構中業務邏輯層和數據訪問層對應MVC中Model(必定View和Controller已找到「婆家」剩下Model只能是業務邏輯層和數據訪問層了)
為什麼要使用
MVC
大部分Web應用程序都是用像ASP,PHP,或者CFML這樣的過程化(自PHP5.0版本後已全面支持面向對象模型)語言來創建的。它們將像資料庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。
首先,最重要的一點是多個視圖能共享一個模型,現在需要用越來越多的方式來訪問你的應用程序。對此,其中一個解決之道是使用MVC,無論你的用戶想要Flash界面或是
WAP 界面;用一個模型就能處理它們。由於你已經將數據和業務規則從表示層分開,所以你可以最大化的重用你的代碼了。
由於模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用HTML來表示,但是它們也有可能要用Adobe
Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。
因為模型是自包含的,並且與控制器和視圖相分離,所以很容易改變你的應用程序的數據層和業務規則。如果你想把你的資料庫從MySQL移植到Oracle,或者改變你的基於RDBMS數據源到LDAP,只需改變你的模型即可。一旦你正確的實現了模型,不管你的數據來自資料庫或是LDAP伺服器,視圖將會正確的顯示它們。由於運用MVC的應用程序的三個部件是相互獨立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的松耦合的構件。
對我來說,控制器也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然後選擇視圖將處理結果顯示給用戶。
拿一個簡單的登陸模塊說,需求是你輸入一個用戶名、密碼,如果輸入的跟預先定義好的一樣,那麼就進入到正確頁面,如果不一樣,就提示個錯誤信息「你Y別在這兒蒙我,輸入的不對!」。
V 這個小小的模塊中,起始的輸入用戶名密碼的頁面跟經過校驗後顯示的頁面就相當於View C
而這里還需要一個controller頁面,就是用於接收輸入進來的用戶名密碼,還有經過校驗後返回的一個flg(此flg就是用於判斷你輸入的是否正確,而跳轉到相應的頁面的)
M 最後還缺一個Model,那麼就是你那個用於校驗的類了,他就是處理你輸入的是否跟預先訂好的一樣不一樣的,之後返回一個flg。
這樣就完全實現了邏輯跟頁面的分離,我頁面不管你咋整,反正我就一個顯示,而controller呢也不管你Model咋判斷對不對,反正我給你了用戶名跟密碼,你就得給我整回來一個flg來,而Medol呢,則是反正你敢給我個用戶名跟密碼,我就給你整過去個flg
m 提供數據,數據之間的關系,轉化等。並可以通知視圖和控制器自己哪些地方發生了變化。 v 提供顯示,能根據m的改變來更新自己 c
比如視圖做了點擊一個按鈕,會先發給這個視圖的控制器,然後這個控制器來決定做什麼操作(讓模型更新數據,控制視圖改變) mvc是一個復合模式
mv,mc都是觀察者模式 m內部的組件組合模式 vc之間是策略模式(可以隨時更換不同的控制器)
MVC模式是上世紀70年代提出,最初用於Smalltalk平台上的。
MVC是表現模式,是用來向用戶展現的許多組建的一個模式(UI/Presentation Patten) MVC有三種角色:
Model:用來儲存數據的組件(與領域模型概念不同,兩者會相互交叉)
View:從Model中獲取數據進行內容展示的組件。同樣的Model在不同的View下可展示不同的效果。獲取Model的狀態,而不對其進行操作。
Controller:接受並處理用戶指令(操作Model(業務)),選擇一個View進行操作。
MVC概述:協作 存在單向引用,例如Model不知道View和Controller的存在。View不知道Controller的存在。這就隔離了表現和數據。View和controller是單向引用。而實際中View和Controller也是有數據交互的。
MVC的重要特點是分離。兩種分離: View和數據(Model)的分離
使用不同的View對相同的數據進行展示;分離可視和不可視的組件,能夠對Model進行獨立測試。因為分離了可視組件減少了外部依賴利於測試。(資料庫也是一種外部組件)
View和表現邏輯(Controller)的分離
Controller是一個表現邏輯的組件,並非一個業務邏輯組件。MVC可以作為表現模式也可以作為建構模式,意味這Controller也可以是業務邏輯。分離邏輯和具體展示,能夠對邏輯進行獨立測試。
MVC和三層架構 MVC與三層架構類似么? View-UI Layer | Controller-Bussiness Layer
| Model-Data Access Layer 其實這樣是錯誤的 MVC是表現模式(Presentation Pattern)
三層架構是典型的架構模式(Architecture Pattern)
三層架構的分層模式是典型的上下關系,上層依賴於下層。但MVC作為表現模式是不存在上下關系的,而是相互協作關系。即使將MVC當作架構模式,也不是分層模式。MVC和三層架構基本沒有可比性,是應用於不同領域的技術。
MVC模式與三層架構:
ui (view)←(contorller)
***********************
bll (model)
***********************
dal (model)