新建立MVC3项目,名为12-1ControllersAndActions,使用空模板。
Global.asax中默认的路由定义为:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }
1、用IController创建控制器
在MVC框架中,控制器类必须实现System.Web.Mvc命名空间的IController接口。
System.Web.Mvc.IController接口如下所示:
public interface IController { void Execute(RequestContext requestContext); }
接口只有一个方法Execute,在请求目标控制器时将被调用。
通过实现IController,就可以创建控制器类,但这是一个相当低级的接口,要做大量工作才能让自己创建的控制器有效,下面只是一个简单的演示。
鼠标右击项目中的Controllers文件夹,选择 Add -> Class,创建新类,取名为BasicController,代码如下:
namespace _12_1ControllersAndActions.Controllers { public class BasicController:IController { public void Execute(RequestContext requestContext) { string controller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestContext.RouteData.Values["action"]; requestContext.HttpContext.Response.Write( string.Format("Controller:{0}, Action:{1}", controller, action)); } } }
如果运行程序,导航到"~/Basic/Index",根据路由定义,也可以导航到"~/Basic",产生的结果为:
Controller:Basic,Action:Index
2、一般的做法是创建派生于Controller类的控制器
鼠标右击项目中的Controllers文件夹,选择 Add -> Controller,新建控制器,命名为DerivedController,代码如下:
namespace _12_1ControllersAndActions.Controllers { public class DerivedController : Controller { // // GET: /Derived/ public ActionResult Index() { ViewBag.Message = "Hello from the DerivedController Index method."; return View("MyView"); } } }
在方法Index上鼠标右键,添加视图,视图取名为MyView
/Views/Derived/MyView.cshtml
@{ ViewBag.Title = "MyView"; } <h2>MyView</h2> <h1>Message: @ViewBag.Message</h1>
原文:http://www.cnblogs.com/brown-birds/p/3765246.html