Controller是MVC模式中的三个核心元素之一.

  MVC模式中的Controller主要负责响应用户的输入, 并在响应时修改Model.

  MVC提供的是方法调用的结果, 而不是动态生成的页面.

  下面新建一个项目名为 MVC Music Store , 以此为例说明一下MVC中的Controller.

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcMusicStore.Controllers
{
public class HomeController : Controller
{ public ActionResult Index()
{
        // 将默认内容修改为"I like cake!" 后即可直接显示在主页上.
ViewBag.Message = "I like cake!";
return View();
} public ActionResult About()
{
ViewBag.Message = "Your app description page."; return View();
} public ActionResult Contact()
{
ViewBag.Message = "Your contact page."; return View();
}
}
}

HomeController 类的Index方法负责决定当浏览网站首页时触发的事件.

下面创建一个新的控制器并命名为 StoreController, 作如下修改:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcMusicStore.Controllers
{
public class StoreController : Controller
{
//
// GET: /Store/ public string Index()
{
return "Hello from Store.Index()";
} //get: /Store/Browse
public string Browse(string genre)
{
return "Hello from Store.Browse() ";
} public string Details()
{
return "Hello from Store.Details()";
} }
}

  不需要额外配置,浏览到/Store/Details就可以执行StoreController类中的Details方法,这就是操作中的路由.

  判断一个类是否是Controller的唯一方式,就是看该类是否继承自System.Web.Mvc.Controller.

   Controoller 才是MVC中真正的核心, 每一个请求都必须通过控制器处理. 有些请求是不需要Model和View的.

public string Browse(string genre)
{
string message = HttpUtility.HtmlEncode("Store.Browse, Genre= " + genre);
return message;
}

  利用HttpUtility.HtmlEncode来预处理用户输入. 这样就能阻止用户用链接向视图中注入JavaScript代码或HTML标记.

  控制器可将查询字符串作为其操作方法的参数来接受.

  ASP.NET MVC 的默认路由约定,就是将操作方法名称后面URL的这个片段作为一个参数, 该参数的名称为ID.  如果操作方法中有名为ID的参数, 那么ASP.NET MVC 会自动将这个URL片段作为参数传递过来.

  

MVC中的Controller的更多相关文章

  1. MVC中从Controller像View层传值

    MVC中的Controller不能直接的訪问View层中的控件,那么是怎样的将Controller中值传到View中,经常使用的有4种 ViewData: 是获取或设置视图的字典对象,它里面存放的是键 ...

  2. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

  3. Asp.net mvc 中的 Controller 的激活

    Controller 激活是指根据路由系统解析出来的 Controller 的名称创建 控制器(Controller)的过程,这里的控制器泛指实现了 IController 接口的类型 激活过程中的核 ...

  4. 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行

    我们知道在ASP.NET Core MVC中Controller上的Filter拦截器是有执行顺序的,那么如果我们在有继承关系的两个Controller类上,声明同一种类型的Filter拦截器,那么是 ...

  5. Spring MVC中的Controller是Serlvet吗?

    1. Controller不是Servlet DispatcherServler是Spring MVC中的唯一Servlet,(这点可通过查看FrameworkServlet的子类确认) Servle ...

  6. 如何对Spring MVC中的Controller进行单元测试

    对Controller进行单元测试是Spring框架原生就支持的能力,它可以模拟HTTP客户端发起对服务地址的请求,可以不用借助于诸如Postman这样的外部工具就能完成对接口的测试. 具体来讲,是由 ...

  7. C# mvc中为Controller或Action添加定制特性实现登录验证

    在本文开始前,先简单讲两个知识点: 1.每个action执行前都会先执行OnActionExecuting方法: 2.FCL提供了多种方式来检测特性的存在,比如IsDefined.GetCustomA ...

  8. asp.net mvc 中的 controller和asp.net web api 的apicontroller有什么区别?(转)

    本质上区别不大,一个返回html/text类型的response,一个返回json/text或者xml/text类型的response,对于api环境而言,apicontroller更智能一点,他可以 ...

  9. MVC中的Controller中返回一个JsonResult在弹出一个下载框?

    public JsonResult ReturnTest() { return Json(new {myMsg ="hello world"}, "text/html; ...

随机推荐

  1. Android 摇一摇 之 震动片

    声明:import android.os.Vibrator; Vibrator mVibrator; 取得震动服务的句柄: mVibrator = (Vibrator)getApplication() ...

  2. iOS 让启动页面延迟的方法

    <1> 利用多线程的方法:[NSThread sleepForTimeInterval:300];

  3. Selenium_获取相对坐标

    <html> <head> <title>位置</title> <style> .test { background: url(" ...

  4. Dependency Injection

    Inversion of Control - Dependency Injection - Dependency Lookup loose coupling/maintainability/ late ...

  5. 抄书 Copying Books UVa 714

    Copying  Books 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/B 题目: Descri ...

  6. js判断移动端系统

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  7. console ouput 与 重定向输出 效率对比

    昨天做一个程序的性能测试的时候,由于用了自动化脚本,测试的时候直接把结果(包括执行时间等信息)输出到文件.后来我在调整源代码的时候单独跑了可执行文件,此时结果是输出到控制台(printf).大约100 ...

  8. MyBatis环境搭建配置文件+入门视频下载

    1.MyBatis优点 操作简单话,代码量少,效率高,成本就降低了 2.MyBatis缺点 参数只能限制为一个 selece语都要手动来写 3.与JDBC的关系:是对JDBC的扩展 把sql语句和ja ...

  9. Why does this json4s code work in the scala repl but fail to compile?

    I'm converting a json-like string into json, and the following code works in the scala repl import o ...

  10. Winform程序以Icon的形式显示在任务栏右下角

    Form最小化是指整个Form都缩小到任务栏上,但是是以Form的标题栏形式显示的, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件, 在使窗体最 ...