2016年6月21日 星期二

[研究] ASP.NET MVC 5入門(二)增加控制器(Controller)

[研究] ASP.NET MVC 5入門(二)增加控制器

2016-06-21

這篇是參考下面這篇的學習,不過工具從 Visual Studio 2013 改成 Visual Studio 2015 with Update 2 繁體中文版;網頁上有提到一篇新的改用 Visual Studio 2015,但是那篇要另外安裝 ASP.NET Core,而目前最新為 ASP.NET Code 1.0.0 RC2,並非正式版,所以暫時不想安裝和參考那篇。

內容不是完全翻譯,因為練習的心得,有增加、刪減圖片和文字。

Getting Started with ASP.NET MVC 5
http://www.asp.net/mvc/overview/getting-started/introduction/getting-started

[研究] ASP.NET MVC 5入門(一)開始
http://shaurong.blogspot.com/2016/06/aspnet-mvc-5_21.html

2.Adding a Controller
http://www.asp.net/mvc/overview/getting-started/introduction/adding-a-controller





ASP.NET MVC 的 URL 格式為

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

定義在 App_Start/RouteConfig.cs 檔案中
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

********************************************************************************

說明參數 [Controller] 控制器的用法

MVC
M (Model) :
V (View) :
C (Controller) : Controllers\HelloWorldController.cs 內容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcMovie.Controllers
{
    public class HelloWorldController : Controller
    {
        // GET: HelloWorld
        public ActionResult Index()
        {
            return View();
        }
    }
}

換成
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...";
        }
    }
}

(下圖) 按下 F5 執行
會出現類似網址,其中 port 可能不一定多少,後面 HelloWorld 請手動加上
http://localhost:38857/HelloWorld/

********************************************************************************

說明參數 [ActionName] 控制器的用法

(下圖) 按下 F5 執行
會出現類似網址,其中 port 可能不一定多少,後面 HelloWorld/Welcome 請手動加上
http://localhost:38857/HelloWorld/Welcome

http://localhost:38857/HelloWorld/Welcome
表示叫用 HelloWorldContoller.cs 控制器中的 Welcome 方法

********************************************************************************

說明參數 [Parameters] 的用法

修改 Controllers\HelloWorldController.cs  的 Welcome() 方法如下
public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

(下圖) 按下 F5 執行
會出現類似網址,其中 port 可能不一定多少,網址改為如下
http://localhost:38857/HelloWorld/Welcome?name=Scott&numtimes=4


********************************************************************************

修改 Controllers\HelloWorldController.cs  的 Welcome() 方法的參數,讓它和 App_Start/RouteConfig.cs 中參數名稱 ID 相同

修改 Controllers\HelloWorldController.cs  的 Welcome() 方法如下
public string Welcome(string name, int ID = 1)
{
    return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);
}

定義在 App_Start/RouteConfig.cs 檔案中
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

(下圖) 按下 F5 執行
會出現類似網址,其中 port 可能不一定多少,網址改為如下
http://localhost:38857/HelloWorld/Welcome/3?name=Rick



********************************************************************************

修改 App_Start/RouteConfig.cs 中路由(route)

修改 App_Start/RouteConfig.cs 檔案中
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

      routes.MapRoute(
           name: "Hello",
           url: "{controller}/{action}/{name}/{id}"
       );
    );

(完)

[研究] ASP.NET MVC 5入門(一)開始
http://shaurong.blogspot.com/2016/06/aspnet-mvc-5_21.html

[研究] ASP.NET MVC 5入門(二)增加控制器(Controller)
http://shaurong.blogspot.com/2016/06/aspnet-mvc-5controller.html

沒有留言:

張貼留言