码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC 5 —— 添加Controller

时间:2016-06-13 19:01:12      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

原文: https://www.asp.net/mvc/overview/getting-started/introduction/adding-a-controller

MVC是 模型-视图-控制器(model-view-controller)的缩写,是一种架构良好,可测试并且维护简单的编程模式

基于MVC的程序包含:

  • 模型(Models):用于的定义程序用到的数据的类,并在其中为数据添加需要的业务验证逻辑
  • 视图(Views): 程序用来动态生成HTML页面的模板文件
  • 控制器(Controllers): 处理浏览器请求,获取模型数据,并指定View模板来向浏览器返回响应

在 Solution  Explorer , 右键点击 Controllers 文件夹,=>Add,  => Controller.

技术分享

 

在弹出的Add Scaffold 对话框中, 选择MVC 5  Controller - Empty,之后点击 Add.

技术分享

 

在弹出的对话框中输入controller的name:HelloWorldController

技术分享

 

可以看到,在项目中的Controllers文件中创建出了 HelloWorldController.cs,同时,Views文件夹中生成了HelloWorld文件夹

用以下代码替换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
    {
public string Index() { return "This is my <b>default</b> action..."; } public string Welcome() { return "This is the Welcome action method..."; } } }

 

运行程序,看到的是项目的Home页,在地址栏中添加HelloWorld (完整是 http://localhost:12174/HelloWorld ),看到的页面如下

技术分享

 

ASP.NET MVC 根据输入的url来调用不同的controller类,ASP.NET  MVC默认的URL路由使用下面的格式:

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

可以在 App_Start/RouteConfig.cs 中设置路由格式

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

namespace MvcMovie
{
    public class RouteConfig
    {
        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 }
            );
        }
    }
}

如果不指定url,默认是Home controller的Index action

URL的第一部分决定使用哪个controller,所以 /HelloWorld 映射到HelloWorldController.cs;URL的第二部分决定执行controller中的

哪一个action方法,所以 /HelloWorld/Index 会执行HelloWorldController中的Index方法(Index是默认的action方法);

在地址栏中输入http://localhost:12174/HelloWorld/Welcome ,可以看到Welcome action 方法返回的字符串

 

技术分享

 

修改Welcome方法以接受URL中的参数

        public string Welcome(string name, int numTimes = 1)
        {
            return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
        }

访问URL: http://localhost:12174/HelloWorld/Welcome?name=Scott&numtimes=4

技术分享

 

修改Welcome方法:

        public string Welcome(string name, int ID = 1)
        {
            return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID);
        }

修改RouteConfig.cs:

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

namespace MvcMovie
{
    public class RouteConfig
    {
        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}"
            );
        }
    }
}

访问URL:http://localhost:12174/HelloWorld/Welcome/Scott/3

 

技术分享

 

ASP.NET MVC 5 —— 添加Controller

标签:

原文地址:http://www.cnblogs.com/Workman2015/p/5581334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!