新增控制器 (C#)
作者: Rick Anderson
注意
本教學課程的更新版本可在這裡使用 ASP.NET MVC 5 和 Visual Studio 2013。 更安全、更容易遵循並示範更多功能。
本教學課程將教導您使用 Microsoft Visual Web Developer 2010 Express Service Pack 1 建置 ASP.NET MVC Web 應用程式的基本概念,這是 Microsoft Visual Studio 的免費版本。 開始之前,請確定您已安裝下列必要條件。 您可以按下列連結來安裝所有元件: Web Platform Installer。 或者,您可以使用下列連結個別安裝必要條件:
- Visual Studio Web Developer Express SP1 必要條件
- ASP.NET MVC 3 工具更新
- SQL Server Compact 4.0 (執行時間 + 工具支援)
如果您使用 Visual Studio 2010 而不是 Visual Web Developer 2010,請按下列連結來安裝必要條件: Visual Studio 2010 必要條件。
具有 C# 原始程式碼的 Visual Web Developer 專案隨附於本主題中。 下載 C# 版本。 如果您偏好使用 Visual Basic,請切換至本教學 課程的 Visual Basic 版本 。
MVC 代表 model-view-controller。 MVC 是開發架構良好且容易維護之應用程式的模式。 以 MVC 為基礎的應用程式包含:
- 控制器:處理應用程式連入要求的類別、擷取模型數據,然後指定檢視範本以傳回對客戶端的回應。
- 模型:代表應用程式數據的類別,以及使用驗證邏輯來強制執行該數據的商務規則。
- 檢視:應用程式用來動態產生 HTML 回應的範本檔案。
我們將涵蓋本教學課程系列中的所有概念,並示範如何使用它們來建置應用程式。
讓我們從建立控制器類別開始。 在 方案總管 中,以滑鼠右鍵按兩下 Controllers 資料夾,然後選取[新增控制器]。
將您的新控制器命名為 「HelloWorldController」。 將預設範本保留為 空白控制器 ,然後按兩下 [ 新增]。
請注意,方案總管 已建立名為 HelloWorldController.cs 的新檔案。 檔案會在 IDE 中開啟。
在 public class HelloWorldController
區塊內,建立兩個看起來像下列程序代碼的方法。 控制器會以範例傳回 HTML 字串。
using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my <b>default</b> action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
您的控制器命名HelloWorldController
為 ,且上述第一個方法名名 。 Index
讓我們從瀏覽器叫用它。 執行應用程式 (按 F5 或 Ctrl+F5) 。 在瀏覽器中,將 「HelloWorld」 附加至網址列中的路徑。 (例如,下圖 http://localhost:43246/HelloWorld.
) 瀏覽器中的頁面看起來會像下列螢幕快照。 在上述方法中,程式代碼會直接傳回字串。 您已告訴系統只傳回一些 HTML,而且確實這麼做了!
ASP.NET MVC 會根據傳入 URL 叫用不同的控制器類別, (和它們內的不同動作方法) 。 ASP.NET MVC 所使用的預設對應邏輯會使用如下的格式來判斷要叫用的程式代碼:
/[Controller]/[ActionName]/[Parameters]
URL 的第一個部分會決定要執行的控制器類別。 因此 /HelloWorld 會對應至 HelloWorldController
類別。 URL 的第二個部分會決定要執行的類別上的動作方法。 因此 ,/HelloWorld/Index 會導致 Index
類別的 HelloWorldController
方法執行。 請注意,我們只需要流覽至 /HelloWorld ,而且 Index
預設會使用 方法。 這是因為名為 Index
的方法是預設方法,如果未明確指定,則會在控制器上呼叫此方法。
瀏覽至 http://localhost:xxxx/HelloWorld/Welcome
。 Welcome
方法隨即執行,並傳回字串 "This is the Welcome action method..."。 預設 MVC 對應為 /[Controller]/[ActionName]/[Parameters]
。 在此 URL 中,控制器是 HelloWorld
,而 Welcome
是動作方法。 您尚未使用 URL 的 [Parameters]
部分。
讓我們稍微修改範例,以便您將一些參數資訊從 URL 傳遞至控制器 (例如 /HelloWorld/Welcome?name=Scott&numtimes=4) 。 變更方法 Welcome
以包含兩個參數,如下所示。 請注意,程式代碼會使用 C# 選擇性參數功能來 numTimes
指出,如果未針對該參數傳遞任何值,則參數應該預設為 1。
public string Welcome(string name, int numTimes = 1) {
return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}
執行您的應用程式,並瀏覽至範例 URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)
。 您可以在 URL 中針對 name
和 numtimes
嘗試不同的值。 系統會自動將網址列中查詢字串中的具名參數對應至方法中的參數。
在這兩個範例中,控制器都已執行MVC的 「VC」 部分,也就是檢視和控制器的運作方式。 控制器會直接傳回 HTML。 通常您不希望控制器直接傳回 HTML,因為這對程式代碼而言非常麻煩。 相反地,我們通常會使用個別的檢視範本檔案來協助產生 HTML 回應。 讓我們看看如何執行這項操作。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應