[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

1. 使用Visual Studio 2015创建Web App

(1)文件>新建>项目,选择Web>ASP.NET Web 应用程序

(2)在新项目MyFirstWebApp对话框中,选择ASP.NET 5模板>Web Application

由于是RC版,这里的”添加单元测试“暂时不能选,上面的WebForms MVC WebAPI将合并,前面一节介绍过了,因此也不需要再选。点确定,完成一个MVC6项目创建。

(3)运行项目

F5在调试模式下运行,或 Ctrl+F5非运行模式下运行

小技巧:启动应用程序 Ctrl+F5(非调试模式)允许您更改代码,文件保存,刷新浏览器,查看代码的变化。很多开发者喜欢使用非调试模式来快速启动应用程序并查看变化。

默认项目是一个响应式的页面,当浏览器窗口缩小或在小屏幕设备上打开时,可以看到导航显示,如下:

2.项目结构

我们先看一下MVC6和MVC5的项目结构差异:

下面是MVC5项目结构

下面是MVC6项目结构

可以,看到和MVC5相比,项目结构差异比较大

(1)项目文件变成了xproj(MVC5项目文件是csproj)

(2)程序配置文件变为config.json(MVC5则是web.config)

(3)增加了project.json 主要用于项目配置,负责程序集、项目部署设置,部分功能类似于MVC5的package.config.

(4)package.json 这个文件在MVC6中是NPM的配置文件,基于Nodejs的包管理器。

(5)gulpfile.js 是gulp配置文件,gulp是基于Nodejs的Javascript任务管理器,在ASP.NET 5中主要管理NPM和Bower中的内容。

(6)Stratup.cs 程序启动入口,类似于原来的Global.asax

(7)Project_Readme.html 项目说明文件,没什么具体作用。

(8)wwwroot 静太资源文件(如css,images,js等)的存放目录

(9)Dependencies Bower和NPM的依赖管理包。

(10)References 程序集引用,和以前类似,但现在有版本区分(如ASP.NET 5.0 和ASP.NET Core 5.0)

想深入了解MVC6项目结构的朋友,可以参考文章:http://www.cnblogs.com/TomXu/p/4496407.html

3.添加控制器(Controller)

在项目文件夹Controllers右击,选添加>新建项

在打开的对话框中,选择MVC控制器类,取名HelloWorldController.cs

我们打开刚才创建的控制器HelloWorldController.cs更改为如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;

// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace MyFirstWebApp.Controllers
{
    public class HelloWorldController : Controller
    { 

        // GET: /HelloWorld/ 

        public string Index()
        {
            return "这是我的默认动作...";
        }

        //
        // GET: /HelloWorld/Welcome/ 

        public string Welcome()
        {
            return "我是一个欢迎方法...";
        }
    }
}

让上面的方法返回一个字符串,F5运行,然在地址后面加上helloworld,刷新一下浏览器,效果如下:

我们打开Startup.cs文件,看一下路由

先找到如下代码:

路由设置的是默认 控制器=Home,方法默认为 Index 参数默认为 id

路由设置格式为 :/[Controller]/[ActionName]/[Parameters]

我们上面指定的控制器,则打开默认的方法Index,如果我们指定方法,运行结果如下:

接着我们看一下参数:

增加如下方法到HelloWorldController.cs

  public string Welcome2(string name, int ID = 1)
  {
            return HtmlEncoder.Default.HtmlEncode(
                "hello,name:" + name + ",id:" + ID);
 }

注意:上面使用的代码htmlencoder.default.htmlencode保护应用程序免受恶意输入(如JavaScript)。

ID有一个默认值,我们传入参数ID时,默认显示1

传入两个参数:

4.添加视图(View)

(1)先在项目的View目录上创建一个跟控制器同名的文件夹 HelloWorld

比如:视图名为HelloWorld,则对应的控制器名为:HelloWorldController

(2)在视图文件夹HelloWorld中创建视图名为:ViewShow.cshtml,

替换视图文件如下:

@{
    ViewData["Title"] = "Index";
}

<h2>Index</h2>

<p>Hello from our View Template!</p>

并在HelloWorldController,添加同名方法,代码如下:

 public IActionResult ViewShow()
 {
      return View();
 }

然后运行如下图所示地址:

控制器方法View() 为返回视图

5.添加模型(Modle)

模型添加实际是添加一个类文件,这里只是简单创建一个实体,后面会完整介绍

右击项目文件夹Models,添加一个类文件,名为:Movie.cs

内容如下:

public class Movie
{
    public int ID { get; set; }
    public string Title { get; set; }
    public DateTime ReleaseDate { get; set; }
    public string Genre { get; set; }
    public decimal Price { get; set; }
}

到这里一个模型创建完成。

6.总结:

本篇内容非常容易理解,介绍了MVC6基本的控制器、视图、模型的创建及最简单的路由设置,虽然基础,但这些是我们学习MVC的基础,后面会继续介绍MVC连接数据库及实现增、删、改、查等。

7.完整源代码下载

Git地址:https://github.com/yubinfeng/BlogExamples

==============================================================================================

返回目录

<如果对你有帮助,记得点一下推荐哦,如有有不明白或错误之处,请多交流>

<对本系列文章阅读有困难的朋友,请先看 《.net 面向对象编程基础》和 《.net 面向对象程序设计进阶》 >

<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>

.NET 技术交流群:467189533

==============================================================================================

时间: 2024-10-03 20:30:01

[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作的相关文章

MVC(模型---视图---控制器)

MVC(模型-视图-控制器)模式,它强制性的使用应用程序输入.处理和输出分开. M(model)是数据模型,v(view)即视图,是指用户界面,C(controller)则是控制器. 模型.视图.控制器的分离,使得一个模型可以有多种视图.如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都反映出这些变化.因此,无论何时发生了何种数据变化,控制器都会将变化通知给所有的视图,导致数据的更新.这就是一种模型的变化的传播机制. 三者的关系图如下: Event(事件)导致Contr

学习模型-视图-控制器MVC模式

MVC简介: MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库记录). Controller(控制器)处理输入(写入数据库记录). MVC 模式同时提供了对 HTML.

[框架模式]经典的模型视图控制器模式MVC

参考:<设计模式> http://blog.csdn.net/u010168160/article/details/43150049 百度百科 引言: Model(模型)是应用程序中用于处理应用程序数据逻辑的部分. 通常模型对象负责在数据库中存取数据. View(视图)是应用程序中处理数据显示的部分. 通常视图是依据模型数据创建的. Controller(控制器)是应用程序中处理用户交互的部分. 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据. MVC 分层有助于管理复杂的应用程

设计模式, mvc 模型视图控制器模式(8)

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它也可以带有逻辑,在数据变化时更新控制器. View(视图) - 视图代表模型包含的数据的可视化. Controller(控制器) - 控制器作用于模型和视图上.它控制数据流向模型对象,并在数据变化时更新视图.它使视图与模型分离开. quotes = ('A man is not complete u

[.net 面向对象程序设计深入](4).NET MVC ——谈谈MVC的版本变迁及新版本6.0发展方向

[.net 面向对象程序设计深入](4).NET MVC ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0到5.0的时间也不短了,很多人只是按照范例去使用MVC的一些基础功能,并没有更加深入的了解MVC.在这一系列中,我主要介绍MVC的一些原理和使用技巧,以及MVC的发展方向. 先说说MVC,首先他是一种设计模式,如果你百度为什么GOF23种设计模式中没有MVC,答案很有意思,如下: “在他们看来

面向对象程序设计简介(1/2)

在使用 Cocoa 和 Objective-C 进行编程的时候,最让人感到困惑的就是面向对象编程.几乎所有的现代编程语言都是面向对象的,学习面向对象的概念和模式对你读写代码都会带来很大的帮助.UITableView 和 UIScrollView 或者 NSString 和NSMutableString 之间的关系体现的是面向对象设计的基本理念.通过对这些理念的理解,您将更好的领会到Cocoa 和 Cocoa Touch内部为什么要像它现在这样组织,并且在您以后编写您自己的应用或者框架的时候,将会

面向对象程序设计简介(2/2)

在 本教程的第一部分中,你学会了面向对象设计的基本概念:对象,继承以及模型-视图-控制器(MVC)模式.你初步完成了一个叫做 Vehicles 的程序,它帮助你更好的理解所学的这些概念.在这第二部分中,你将学习多态性以及其它一些面向对象编程的关键概念:类工厂方法和单例.如果你已经完成了本教程的前半部分,那就太好了!你可以在本教程中继续使用之前您所使用的工程.然而,如果你刚刚开始阅读本篇教程,你也可以从这里下载我们为你准备的第一部分完整工程. 多态性(Polymorphism) 关于多态的普通定义

王颖奇 20171010129《面向对象程序设计(java)》第十四周学习总结

实验十四  Swing图形界面组件 理论知识知识点: 1.Swing和MVC设计模式2.布局管理器3.文本输入4.选择组件5.菜单6.对话框 实验时间 2018-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 l 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: l 掌握各种布局管理器的用法: l 理

王之泰201771010131《面向对象程序设计(java)》第十四周学习总结

第一部分:理论知识学习部分 第12章 Swing用户界面组件 12.1.Swing和MVC设计模式 a 设计模式初识b 模型-视图-控制器模式c Swing组件的模型-视图-控制器分析 12.2布局管理器 a 布局管理器是一组类. b 实现java.awt.LayoutManager接口 c 决定容器中组件的位置和大小 d Java.awt包中定义了5种布局管理类,每一种布 局管理类对应一种布局策略. e 每个容器都有与之相关的默认布局管理器. f 当一个容器选定一种布局策略时,它应该创建该 策

刘志梅201771010115.《面向对象程序设计(java)》第十四周学习总结

实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1)设计模式:反复使用.经过分类编目的.代码设计经验的总结. 在Alexander的模式分类和软件模式的分类中,每种模式都遵循一种特定的格式. 模型-视图-控制器模式并不是AWT和Swing设计中使用的唯一模式:下列是应用的另外几种模式:容器和组件是"组合(composite)"模式:带滚动条的面板是"装饰器(decorator)"模式:布局管理器是"策略(stra