当前位置: 首页 > news >正文

ASP.NET MVC3-第02节-添加一个Controller (C#)

前言

----------------------------

第01节[翻译]01-ASP.NET MVC 3介绍 

----------------------------

MVC是“model-view-controller”的缩写,也就是 模型-视图-控制器 ,MVC是一个“分离关注点”的架构,这将会变得容易开发和维护

MVC基本程序包括:

控制器(Controllers):是一个从程序中获取参数,接收数据,和做特殊处理,制定视图,然后响应给客户端的
模型(Models):是一个体现(represent )数据的引用,和使得数据的正确性,对数据进行验证的
视图(Views):你的程序使用的一个HTML响应的动态生成的模版文件,就是一个用来生成HTML的模版文件

我们将会通过这些说明来想你展现怎么使用他们来创建一个MVC程序

我们来创建一个控制器类,在解决方案中Solution Explorer, 右击”Controllers “ 文件夹,然后选择 添加 --控制器Add Controller


给你的新的控制器起名为”HelloWorldController“,模版那里 选择 空控制器  Empty controller,然后 点击  添加 (Add)



注意在解决方案中 一个新的文件被创建:HelloWorldController.cs,该文件在IDE是打开的

在里面的  public class HelloWorldController 块 ,创建两个方法  向下面的代码
    ---------
这个控制器将会返回HTML的字符代码作为一个列子

using System.Web;
using System.Web.Mvc;
  
namespace MvcMovie.Controllers
{
    public class HelloWorldController : Controller
    {
        //
        // GET: /HelloWorld/
  
        public string Index()
        {
            return "This is my <b>default</b> action...";
        }
  
        //
        // GET: /HelloWorld/Welcome/
  
        public string Welcome()
        {
            return "This is the Welcome action method...";
        }
    }
}

 


你的控制器命名为 HelloWorldController 这个第一个方法命名为 ”Index“

我们来在浏览器中 运行 (按F5 或者 Ctrl+F5).,在浏览器中的地址栏 出现  "HelloWorld"  例如这样的地址http://localhost:43246/HelloWorld

这个页面 看上去如下图的截图, 在我们看到 一些HTML标签 也能被浏览器渲染

<b>default</b>



ASP.NET MVC  创建的不同的控制器类, 它们里面有有不同action方法, 根据来路URL的不同,然后被不同的路由规则匹配出请求的action,路由规则如下

/[Controller]/[ActionName]/[Parameters]

第URL的第一部分表示要执行的控制器类,因此/HelloWorld  这个是对应HelloWorldController 这一个类

URL的第二部分是类要执行的方法,因此/HelloWorld/Index 这一个对应的是HelloWorldController 里面的 Index 方法

如果通过 浏览器 访问”http://localhost:xxxx/HelloWorld/Welcome.“

Welcome 方法将会被调用 返回This is the Welcome action method..." 的字样,默认的MVC路由规则是

/[Controller]/[ActionName]/[Parameters].

URL的第三部分是[Parameters] 这个是网控制器的方法中 传递一个参数




让我们来修改这个例子,让我们能够通过URL向控制器传递一些参数

例如 这样的请求/HelloWorld/Welcome?name=Scott&numtimes=4  改变你的Welcome 方法 添加两个参数 如下方代码

注意代码使用的是 C#  属性的参数  同时 numTimes 参数 默认是1,如果没给他传值的话

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

运行程序和访问地址http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4

你可以看到不同的名称和时间 name and numtimes

路由系统会自动的匹配出地址栏请求的参数 传给你的方法



通过上面的列子,控制层是负责 MVC中的VC 就是 视图和控制器的工作 控制器直接返回HTML 通常你的控制层是不会直接返回HTML的

因此这样会变得非常累赘的代码, 取而代之的是使用 模版引起 来展现相应HTML 我们下一课程会讲 ....

如果更多的学习资料,可以到--ASP.NET MVC专题...

谢谢大家支持....后续还有九篇文章,都比较权威的....需要原文的可以到这里...

 

相关文章:

  • for test
  • What’s New in Python 2.7 — Python 3.4.0b2 documentation
  • C# 集合类 Array,Arraylist,List,Hashtable,Dictionary...
  • 转观念 变架构 补短板——析科华恒盛向数据中心方案商转型
  • spring security3.x学习(5)_如何拦截用户请求
  • php.ini中文解释
  • ubuntu下gvim字体设置
  • 《JAVA面向对象的特征 》
  • MySQL安装后设置root 密码
  • 对《神奇的C语言》文中例子 5 代码的分析讨论
  • Mysqlbackup 3.9.0 企业级备份工具详解
  • I/O负载均衡策略之一 条带化
  • 疯狂ios讲义之实现游戏逻辑(3)
  • 常见开源协议GPL、Apache、CDDL、BSD等区别
  • 剑指 offer set 24 扑克牌的顺子
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • DataBase in Android
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • maya建模与骨骼动画快速实现人工鱼
  • Mithril.js 入门介绍
  • MySQL主从复制读写分离及奇怪的问题
  • Netty源码解析1-Buffer
  • Spring框架之我见(三)——IOC、AOP
  • tensorflow学习笔记3——MNIST应用篇
  • ViewService——一种保证客户端与服务端同步的方法
  • 简析gRPC client 连接管理
  • 如何优雅地使用 Sublime Text
  • 找一份好的前端工作,起点很重要
  • ​你们这样子,耽误我的工作进度怎么办?
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET MVC第三章、三种传值方式
  • .net经典笔试题
  • @ModelAttribute使用详解
  • @SentinelResource详解
  • [Android Studio 权威教程]断点调试和高级调试
  • [AX]AX2012 SSRS报表Drill through action
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ3223]文艺平衡树
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [C++随笔录] 红黑树
  • [Codeforces] probabilities (R1600) Part.1
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [HNOI2010]BUS 公交线路
  • [html] 动态炫彩渐变背景
  • [I2C]I2C通信协议详解(一) --- 什么是I2C