Asp MVC(统制层)

Asp MVC(控制层)

controller层的定义:主要是通过分析URL分发,将M层将数据拿出来,然后返回到VIEW层。

 

自己定义一个controller

1.

使用Icontroller接口

public interface Icontroller

{

     void Execute(RequestContextrequestcontent);

}

2.实现该接口

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

namespace NerdDinner.Models
{

//命名规则,NAME+Controller
    public class MyController : IController
    {


        public void Execute(RequestContext requestContext)
        {
            var response = requestContext.HttpContext.Response;
            response.Write("<h1>Hello World</h1>");
        }
    }
}

 

然后在浏览器中输入:http://localhost:2331/My

注意router在解析URL的时候会将你的MyController中的Controller去掉,所以你在实现类的时候要写,在URL的时候不要写。

传入的参数requestContext得到HttpContext可以得到很多对象。

 

类似JAVA中的struts中的Action

但是我们在实际开发中直接继承的是Controller

 public class HomeController : Controller

 

自己实现添加一个路由信息:

如果你的URL想变成:http://localhost:2331/simple/distance/1,2/3,4

首先在Global.asax.cs

加入定义的一个路由信息:

routes.MapRoute(
                "Simple", // 路由名称
                "Simple/distance/{x1},{y1}/{x2},{y2}", // 带有参数的 URL
               
                 new { controller = "Simple", action = "Distance", id = UrlParameter.Optional } // 参数默认值
            );

然后写SimpleController

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

namespace NerdDinner.Controllers
{
    public class SimpleController : Controller
    {
        //
        // GET: /Simple/

        public void Distance(int x1,int y1,int x2,int y2)
        {
            Response.Write(x1+"+"+y1);
            Response.Write(x2 + "+" + y2);
        }

    }
}
然后就可以通过浏览器访问了。

 

 

返回的ActionResult接口:

public abstract class ActionResult

{

    public abstract void ExecuteResult(ControllerContext context);

}