控制器

控制器的角色

        MVC模式中的控制器(Controller)主要负责响应用户的输入,并在响应时修改模型(Model)。通过这种方式,MVC模式中的控制器主要关注的是应用程序流、输入数据的处理,以及对相关视图输出数据的提供。控制器主要负责接收和解释输入,并更新任何需要的数据类,然后把通知用户进行的修改和程序更新。

        过去的web服务器支持访问以静态文件存储在磁盘上的html页面。随着动态网页的盛行,web服务器也支持由存储在服务器上的动态脚本生成的html页面。mvc则略有不同。URL首先告知路由机制去实例化哪个控制器,调用哪个操作方法,并为该方法提供需要的参数。然后控制器的方法决定使用哪个视图,并对该视图进行渲染。

        URL并不与存储在Web服务器磁盘上的文件有直接对应关系,而是与控制器类的方法有关。MVC,路由子系统在前面,之后才是控制器。

       理解mvc模式在web场景中工作原理的方法就是记住:mvc提供的是方法调用结果,而不是动态生成的页面(又名脚本)。

       对于web程序而言,用户的应用程序状态本质上是消失的,只不过后来用户每次单击都会恢复。虽然这会极大地简化程序,但是以html形式出现的用户界面需要从服务器发送到客户端浏览器。这就引发一个问题,“应用程序在哪里?”,对于大多数web页面而言,应用程序就在客户端和服务器之间“舞蹈”,每次都维持一个小状态,可能是k客户端的一个cookie或是服务器s上的一块内存,一切都被小心地设计来掩盖一个小小的“谎言”,这个“谎言”就是Internet和HTTP可以进行有状态的编程。

      在web开发中采用mvc模式,控制器再次走到前列。应用mvc模式要求web应用程序中的每一个用户输入只采用请求的方式。即在mvc中,每个请求都被路由到控制器的一个方法,该控制器全权负责解释这些请求,如有必要,还要操纵模型,然后选择一个视图反馈给用户。

控制器基础

     使用MVC模板---Individual User Accounts---创建的项目包含两个控制类:
 

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

namespace MvcMusicStore.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        MusicStoreEntities storeDB = new MusicStoreEntities();

        public ActionResult Index()
        {
            // Get most popular albums
            var albums = GetTopSellingAlbums(5);

            return View(albums);
        }

        private List<Album> GetTopSellingAlbums(int count)
        {
            // Group the order details by album and return
            // the albums with the highest count

            return storeDB.Albums
                .OrderByDescending(a => a.OrderDetails.Count())
                .Take(count)
                .ToList();
        }
    }
}

注:Index()方法负责决定当浏览网站时触发的事件。
        控制器中的方法称为控制器操作。
        mvc,不需要做任何额外配置,url是什么,就会根据url执行对应控制器中的对应方法,这就是操作中的路由。
        判别一个类是否是控制器类的唯一方式,就是查看该类是否继承自System.Web.Mvc.Controller。
        mvc中model和view很重要,但控制器才是真正的核心。每一个请求都必须通过控制器处理,然而其中有些请求是不需要model和view的。

控制器中操作中的参数

     控制器操作可将查询字符串作为其操作方法的参数来接收,而不需要通过request来获取。
     MVC的默认路由约定,将操作方法名称后面URL的片段作为一个参数时,该参数的名称默认为ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值