環境與版本

作業系統:Window10 64x 版本:2004

開發軟件(IDE):Visual Studio 2019 Community

.NET版本:ASP.NET Core 3.1

專案架構:MVC

新增控制器

在Controller資料夾下,創建一個HelloWorldController.cs的類別。(如圖)

以下列內容取代 Controllers/HelloWorldController.cs 的內容:

using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;

namespace MvcMovie.Controllers
{
    public class HelloWorldController : Controller
    {
        // 
        // GET: /HelloWorld/

        public string Index()
        {
            return "This is my default action...";
        }

        // 
        // GET: /HelloWorld/Welcome/ 

        public string Welcome()
        {
            return "This is the Welcome action method...";
        }

        // GET: /HelloWorld/Welcome_1/ 
        // Requires using System.Text.Encodings.Web;
        public string Welcome_1(string name, int numTimes = 1)
        {
            return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
        }

        // GET: /HelloWorld/Welcome_2/ 
        public string Welcome_2(string name, int ID = 1)
        {
            return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
        }

    }
}

效果展示

GET: /HelloWorld/

GET: /HelloWorld/Welcome/

MVC 使用的預設 URL 路由邏輯使用像這樣的格式來判斷要叫用的程式碼:

/[Controller]/[ActionName]/[Parameters]

Startup.cs 檔案的 Configure 方法中設定路由格式

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

不提供任何 URL 區段時,則會預設為範本行5中指定的 “Home” 控制器和 “Index” 方法。

GET: /HelloWorld/Welcome_1/?name=jack&numTimes=2

給予參數的方式。

GET: /HelloWorld/Welcome_2/5?name=jack

URL 區段符合路由參數 id,所以直接帶入

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

參考資料:

第2部分:將控制器新增至 ASP.NET Core MVC 應用程式:https://docs.microsoft.com/zh-tw/aspnet/core/tutorials/first-mvc-app/adding-controller?view=aspnetcore-3.1&tabs=visual-studio

This Post Has One Comment

發佈留言