Welcome! 登入 註冊
美寶首頁 美寶百科 美寶論壇 美寶落格 美寶地圖

Advanced

Learn MVC Project in 7 days – Day 1 – Lab 1 – Demonstrating Controller with a simple hello world

前陣子 在網路上 看到一個網站 介紹 ASP.Net MVC

網站叫做

[url=https://www.codeproject.com/articles/866143/learn-mvc-step-by-step-in-days-day]Learn MVC Project in 7 days[/url]

內容真的很棒
我個人獲益非常多
他總共有七篇文章,讓讀者分七天來學習

內容深入淺出
很適合 初學者 學習
範圍也涵蓋的不錯
學完後,應該可以做不少事情
所以 我想在這裡 把他提到的一些重點 摘要在這裡

他裡面 總共有 36個實驗(Lab),也就是36個例子
我想在這裡 主要以這36個實驗為主軸 來介紹他的內容

我摘要的重點原則上是參考原文
但描述的順序和方式可能會和原文不太一樣

我的文章裡,一直都會附上原文的連結
以方便使用者參考原文

=======================================================


[url=https://www.codeproject.com/articles/866143/learn-mvc-step-by-step-in-days-day]Learn MVC Project in 7 days – Day 1[/url]


=======================================================

[url=https://www.codeproject.com/articles/866143/learn-mvc-project-in-days-day#Lab1%E2%80%93DemonstratingControllerwithasimpleMVChelloworld]Lab 1 – Demonstrating Controller with a simple hello world[/url]
Lab1 – 以一個簡單的「hello world」程式來示範「Controller」)

=======================================================

目的:
(1) 了解 Controller
(2)了解 Action Method

=======================================================

步驟:(詳見原文)

(1)建立一個 MVC 專案
(2)在這個MVC專案裡面,建立一個 控制器叫 TestController
(3)將TestController 裡面的 Index() 方法 刪掉,並加入一個 GetSring方法如下:
[code]
public class TestController : Controller
{
public string GetString()
{
return "Hello World is old now. It’s time for wassup bro winking smiley";
}
}
[/code]

(4)在瀏覽器裡打入下列網址:
localhost/Test/GetString

觀察結果如下:

[img]https://www.codeproject.com/KB/aspnet/866143/lab_1.24.png[/img]

=======================================================

討論:

一、 Controller 名稱的意義:

TestController:Class Name (類別名稱)
Test:Controller Name (控制器名稱)


二、Action Method

(一)意義:Action Method 是一個寫在Controller裡面的 Public Method,它可以接受使用者的要求,並給予使用者一些回應的訊息。

(二)使用者要求 Action Method 的方法:

在網址列打入:網址/Controller Name/Action Method
如上例的: localhost/Test/GetString

請注意,前面寫的是 Controller Name :Test
不是 Class Name :TestController

(三)Action Method 回應使用者一些訊息的方法:

在Action Method的程式 中 寫入 return 指令如下:

[code]
return XXXX
[/code]


(四) 可以回應的訊息種類很多

(1)比如說上例中回應的是字串

寫法如下:

return "Hello World is old now. It’s time for wassup bro winking smiley";

回應的結果如下:

[img]https://www.codeproject.com/KB/aspnet/866143/lab_1.24.png[/img]

(2)也可以回應物件,如下例的 return c :


[code]
namespace WebApplication1.Controllers
{
public class Customer
{
public string CustomerName { get; set; }
public string Address { get; set; }
}
public class TestController : Controller
{
public Customer GetCustomer()
{
Customer c = new Customer();
c.CustomerName = "Customer 1";
c.Address = "Address1";
return c;
}
}
}
[/code]

回應的結果如下,它回應的其實是 物件的 ToString() 屬性:

[img]https://www.codeproject.com/KB/aspnet/866143/lab_1.25.png[/img]


(3) 回應物件的屬性:(本例為覆寫(override)物件的 ToString() Method )

例:
[code]
public override string ToString()
{
return this.CustomerName+"|"+this.Address;
}
[/code]

回應結果:

[img]https://www.codeproject.com/KB/aspnet/866143/lab_1.26.png[/img]

(4) 當然,最常見的是回應 View(),也就是

[code]
return View()
[/code]

View 將在下一個 Lab 介紹




三、Controller 裡面的 Method 種類:

(一)Actino Method:一個 Method 如果是 Public ,原則上為 Action Method ,也就是可直接以網址列接受使用者要求的 Method
(二)一般 Method:一個 Method 如果不是 Public,則為 Controller 內部的 一般 Method ,不可接受使用者要求
(三)Public 的一般 Method:如果 Controller 內的一般 Method 想要設成 Public ,可在 Method 上面加上 [NonAction] ,他就不可以接受使用者要求了, 如下例所示:

[code]
[NonAction]
public string SimpleMethod()
{
return "Hi, I am not action method";
}
[/code]

在這個例子裡,如果我們在網址列打上 localhost/Test/SimpleMethod
則瀏覽器畫面會出現下列錯誤訊息:

[img]https://www.codeproject.com/KB/aspnet/866143/lab_1.27.png[/img]



Edited 13 time(s). Last edit at 01/23/2017 01:02AM by RandomVariable.
(編輯記錄)