mvc学习到现在,相对所学到的一系列的知识做一个总结,于是就有了这个标题—简单的mvc。文如名,写的是简单的mvc的知识,目标群也不言而喻。这一篇来个简单的开始,从头建立一个web项目,比如hello world。

  asp.net项目的请求处理核心是IHttpHandler,不论是之前的Page,还是之后MVC。所以最简单的web项目,就是只有一个IHttpHandler的项目。项目只有两个文件,一个.ashx文件,内容:

<%@ WebHandler Class="Danyuers.SimpleMvc.Hello" Language="C#" %>

另外一个是相应的代码文件,建立一个名为Hello的类,也就是上面的Class属性所指向的类别,代码如下:

namespace Danyuers.SimpleMvc {
public class Hello : IHttpHandler {
public bool IsReusable {
get { return false; }
} public void ProcessRequest(HttpContext context) {
context.Response.Write("<h1>hello world!</h1>");
context.Response.End();
}
}
}

然后编译(请将编译目标文件改为bin),映射到虚拟目录,通过localhost:xxxx/xx.ashx即可访问到建立的项目。记得添加相应的引用(system.web)。

  好了,简单的项目搭建已经完成,但这不是真正的mvc,mvc最直观的表现就是路由映射,区别于webform的文件映射。一个简单的mvc项目需要哪些东西呢?第一,global.asax文件,定位到HttpApplication;第二,路由映射表,定义路由;第三,路由映射对象,也就是控制器。如同上面的ashx一样,global.asax也只是包含一行指令:

<%@ Application Codebehind="Global.cs" Inherits="Danyuers.SimpleMvc.MvcApplication" Language="C#" %>

还是同上,建立global.cs,在其中建立SimpleMvcApplication,代码如下:

using System;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing; namespace Danyuers.SimpleMvc{
public class MvcApplication : HttpApplication {
protected void Application_Start() {
RouteRegister.Regist(RouteTable.Routes);
}
}
}

注意其中的RouteRegister,其中定义了我们需要的路由映射。建立单独的代码文件RouteRegister.cs,代码如下:

using System;
using System.Web.Mvc;
using System.Web.Routing; namespace Danyuers.SimpleMvc{
internal class RouteRegister {
public static void Regist(RouteCollection routes) {
routes.RouteExistingFiles = false;
routes.Ignore("{resources}.axd/{pathInfo*}"); routes.MapRoute(
name: "default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Hello", action = "Index", id = UrlParameter.Optional },
namespaces:new String[]{"Danyuers.SimpleMvc.Controllers*"}
);
}
}
}

从其中可以很明显看到建立一个通用路由:{controller}/{action}/{id}。最后一步,建立控制器。建立Hello.cs,代码如下:

using System;
using System.Web.Mvc; namespace Danyuers.SimpleMvc.Controllers {
public class HelloController:Controller{
public void Index() {
Response.Write("<h1>Hello,world!!</h1>");
Response.End();
}
}
}

好了,最后编译,iis映射,运行即可,相较于最初的单httphandler项目,这次直接访问域名即可。

  相较于webform,mvc的代码分布更加分散,却也更加整洁,也更加富有弹性。

简单的mvc之一:简单的开始的更多相关文章

  1. 自己动手写一个简单的MVC框架(第一版)

    一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...

  2. MVC架构模式分析与设计(一)---简单的mvc架构

    首先 我要感谢慕课网的老师提供视频资料 http://www.imooc.com/learn/69 下面我来进行笔记 我们制作一个简单的mvc架构 制作第一个控制器 testController.cl ...

  3. PHP之简单实现MVC框架

    PHP之简单实现MVC框架   1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种 ...

  4. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  5. AsMVC:一个简单的MVC框架的Java实现

    当初看了<从零开始写一个Java Web框架>,也跟着写了一遍,但当时学艺不精,真正进脑子里的并不是很多,作者将依赖注入框架和MVC框架写在一起也给我造成了不小的困扰.最近刚好看了一遍sp ...

  6. Nancy和MVC的简单对比

    Nancy和MVC的简单对比 在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy ...

  7. [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)

    一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...

  8. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(二)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(二) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 前: ...

  9. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(三) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

随机推荐

  1. 使用javascript实现的一些功能

    原文:使用javascript实现的一些功能 今天学习了javascript中的事件,已经接近尾声,可以说明天跨入jquery的学习啦,学习了一周的javascript,感觉还没有掌握其中学习的微妙之 ...

  2. Linux通过编辑器vi使用介绍

    vi编辑器是所有Unix和Linux在标准的编辑系统. 对Unix和Linux该系统无论是什么版本号,vi编辑器是完全一样. 基本上vi它可分为三种状态,每一个是命令模式(commandmode).插 ...

  3. Oracle SQL in 超过1000 的解决方案

    处理 Oracle SQL in 超过1000 的解决方案 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项 ...

  4. HTML5 五彩圆环Loading加载动画实现教程

    原文:HTML5 五彩圆环Loading加载动画实现教程 今天我们要来介绍一款效果很特别的HTML5 Loading加载动画,不像其他的Loading动画,这款Loading动画颜色很丰富,并且在转圈 ...

  5. POJ 1284 Primitive Roots 原根

    题目来源:POJ 1284 Primitive Roots 题意:求奇素数的原根数 思路:一个数n是奇素数才有原根 原根数是n-1的欧拉函数 #include <cstdio> const ...

  6. DDD分层架构之聚合

    DDD分层架构之聚合 前面已经介绍了DDD分层架构的实体和值对象,本文将介绍聚合以及与其高度相关的并发主题. 我在之前已经说过,初学者第一步需要将业务逻辑尽量放到实体或值对象中,给实体“充血”,这样可 ...

  7. Shell的学习就从重装系统开始吧

    小标题:与Fedora的爱恨情仇 干巴巴的shell学习实在枯燥,看来学习姿势还是要从实践入手 起因:传说中的不作死就不会死,昨晚偶遇一本PDF,讲glade编辑界面的,以下就被吸引了,跟着讲解搞出个 ...

  8. UC编程:输入输出重定向(标准IO)

    [c] #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char szBuf[100]; /* 将屏 ...

  9. 大约Android 3.0后AsyncTask默认的单线程分析

    在Android下了很大的后台操作在需要的情况下.通常用于AsyncTask这个类.比方说,网络负载形象.访问server接口.一般的情况是使用一个的一例AsyncTask对象mTask,复制Asyn ...

  10. 【Linux 工作经常使用命令 】

    1, 批量杀某个程序 比方某个程序叫  url_info.py, 起了若干个进程 . 高速查杀. 先查看 ps aux | grep url_info.py 确认没问题 ,能够杀,则批量kill ps ...