2013-01-22 53 views
4

我對.net框架和整個MVC編程哲學相當陌生。有人可以澄清並給我一個基本的解釋,說明控制器如何使用C#與網站進行交互?我明白如何用C#編寫代碼,並理解框架的某些方面,但我不明白它們是如何結合在一起的。瞭解MVC4控制器

+0

http://www.codinghorror.com/blog/2008/05/understanding-model-view-controller.html看看這篇文章。它可能會回答你的問題。 –

回答

5

模型 - 是一種表示某種對象(通常爲一種)的數據結構。其目的是讀取,寫入和管理對底層對象的訪問,目的是堅持應用程序狀態。

查看 - 用於向用戶顯示可視界面的組件,可能是使用模型。它可能是一個簡單的表格,或者是一個完整網頁的複雜組合。

控制器 - 用戶驅動的應用程序邏輯層位於視圖和模型之間。它處理用戶交互,加載模型並向用戶發送視圖。它根據用戶請求確定發送到視圖的模型。

應用程序的整體文件夾結構可能如下所示。

>> Website 
    >> Controllers 
    >> Models 
    >> Views 

在C#MVC每個控制器必須具有後綴Controller中的名稱,他們必須擴展控制器類和具有在視圖中的文件夾的名稱的前綴(不Controller)的一個文件夾。此文件夾將包含與控制器上特定操作相關的所有視圖。

控制器可以包含任意數量的定義爲公共功能的動作。默認情況下,從控制器操作返回結果時,視圖的名稱必須與操作的名稱相對應。但是,您也可以按名稱指定視圖。從控制器加載視圖時,可以將對象作爲模型發送到視圖,並通過生成其內容。

控制器可以加載任何模型,不受任何限制。

一個Account控制器定義如下,採取行動Login。控制器放置在/Controllers文件夾中的AccountController.cs文件中,並且該控制器的任何視圖(Login,在本例中爲文件名Login.cshtml)都放在/Views/Account文件夾中。

注意:命名約定必須正確,因爲在控制器和視圖之間使用名稱來鏈接數據。

public class AccountController : Controller 
{ 
    public ActionResult Login(string returnUrl) 
    { 
     if (User.Identity.IsAuthenticated) 
     { 
      return RedirectToAction("Index","Site"); 
     } 

     return View("Login", new LogOnModel()); 
    } 
} 

可通過http://www.mysite.com/Account/Login訪問。如果用戶通過身份驗證,則控制器將重定向到主站點控制器,如果用戶未登錄,則會顯示Login視圖,該視圖從指定的LogOnModel加載數據。

這實際上只是觸及了可能的表面。閱讀ScottGu的一些精彩文章的一些在線信息,深入探討如何使用MVC。

ASP.NET MVC Framework Overview

ASP.NET MVC Framework How To - Part 1 // Part 2 // Part 3 // Part 4

注:這些文章是因爲他們對MVC 1版早在2007年寫的略顯陳舊,但怎樣的概念模型,視圖和控制器交互仍然適用。

+0

真的挖這個例子。謝謝。 –

+0

明確的解釋。真棒!謝謝... :) – Nageswaran

3

控制器有點作爲內部Web服務。他們將您的服務器端代碼暴露給您的視圖,並允許他們調用控制器。就模式而言,大多數人認爲控制器應儘可能薄。如果存在繁重的業務邏輯或其他業務邏輯,則應將其抽象爲應用程序的另一部分。在我看來,控制器在那裏爲視圖提供一些要調用的內容,然後返回該數據,無論是text/html,json還是xml。

這裏是一個偉大的信息財富,直接從來源:http://www.asp.net/mvc/mvc4

具體到現場,我會強烈建議的教程。它將使您更清楚地瞭解模型,視圖和控制器如何相互交互和相互依賴。 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

+0

感謝您的資源! –

1

控制器是一個具有方法的類,這些方法被稱爲動作,您將這些動作視爲「視圖」(cshtml文件)。

//This is your controller 
public class HomeController : Controller 
{ 
    // This is your action 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

您可以右鍵單擊「索引」操作,然後選擇「添加視圖...」這將創建atached到行動的新觀點。

爲了獲得這一觀點,你會做這樣的事情:本地主機/控制器/動作 在這種情況下,它應該是:本地主機/首頁/指數,其中首頁=控制器,指數=動作

你應該閱讀有關the MVC pattern

微軟有一些很好的tutorials for beginers

+0

感謝您的資源! –

1

控制器在ASP.NET MVC是韓德爾您的應用程序邏輯的請求響應的對象。它會根據請求創建(例如HTTP請求),並且直到由View層創建的響應纔可用。之後,它將是一個不可用的對象(並且GC很快就會釋放其分配的內存),並且對於另一個請求,必須創建一個新的控制器對象,等等。

我認爲這個定義很明顯,它爲什麼必須是輕量級的,以及如何使用它。