在掌握了数据库访问方法之后,我们来看几个mvc的入门程序,借此熟悉mvc的常见工作方式。

一、创建项目,显示一个最简单的页面。

  要点:1、为了突出重点,不使用模版;2、项目类型为mvc,便于获得vs添加的各种引用、文件夹

  如图(vs2017,其他版本大同小异,下同):

  新建项目

  

  选择模版和项目类型

  

  右键控制器文件夹,为项目添加控制器

  

  选择控制器类型(选最新的)

  

  按照惯例,取名为“Home”

  

  完成之后,系统自动创建控制器代码(HomeController.cs),里面默认的方法(操作)是Index。

  对方法里返回的视图的代码点右键,为它添加视图文件

  

  使用默认名称(和控制器里的操作同名),去掉全部选项,使用最干净的视图

  

  在随后生成的文件(可以理解为以前所学的html文件)里,使用网页知识,完成一些简单的内容,如:

  

  上图中,除了汉字,都是自动生成的内容。

  到此为止,最简单的mvc程序完成。右侧资源管理器中可以看到创建的文件

  

  运行之后可以看到效果

  

  注意:地址栏中的“Home”是控制器名称,“Index”是具体操作。它们对应控制器文件中的类和方法。

  以后在调试的时候,如果出现无法在32位环境中运行的内容,可以调整vs的调试器,改为64位环境。具体如下图:

  

  具体位置:

  

二、视图中的语法:Razor

  Razor语法的核心:在一堆html中,随时用“@”符号切换到写C#的模式。

  例1:输出327+254的值

  

  例2:计算1+2+3+...+100的值

  

  c#标记可以和html混写,随时用@切换为C#。

  例3:用无序列表输出1-20

  

  Razor语法的详细介绍,见书上P115。

三、Mvc中的输入和输出:

  1.输出:控制器向视图传值-viewdata,P85

  例:从后台(控制器)向前台(视图)传递内容  

public ActionResult Index()
{
ViewData["d1"] = "我是来自后台的ViewData数据";
TempData["d1"] = "我是来自后台的TempData数据";
return View();
}

  运行效果:

  

  2.输入:视图向控制器传值-表单知识,P102

  例:输入一个数字,翻倍把它输出。

  控制器代码:  

public class HomeController : Controller
{
// GET: Home
public ActionResult Index(int a=)//此处的a=0表示默认值
{
ViewData["d1"] = a;
return View();
}
}

前台代码:  

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@{int x = int.Parse(ViewData["d1"].ToString());
if (x == )
{
<div> 还没输入值 </div>
}
else
{
<div>已输入值@(x)</div>
<div>它的2倍是@(x * )</div>
}
}
</div>
<div>
<form action="/home/index">
<input type="text" name="a" /><input type="submit" />
</form>
</div>
</body>
</html>

  以上例子是把运算放在了视图中,我们还可以把它放在控制器中运行,大家尝试一下。

  对于标准的mvc结构来说,这种运算应该算是“业务逻辑”,应该放在业务层处理。这里只是为了演示视图和控制器的工作方式。

  Request作为内置对象可以获取跟请求用户相关的内容。在获取表单内容方面,无论用户是用get还是post方式提交,都可以通过Request[key]的方式获取内容。

  例,控制器代码:  

public ActionResult Index()
{
if (Request["a"] == null)
{
ViewData["a"] = "空";
}
else if (Request["a"] == "")
{
ViewData["a"] = "无";
}
else
{
ViewData["a"] = Request["a"];
}
return View();
}

  视图代码:  

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@ViewData["a"]
<form id="form1" name="form1" method="put" action="/Home/Index">
<label for="a"></label>
<input type="text" name="a" id="a" />
<input type="submit" />
</form>
</div>
</body>
</html>

  大家可以自行熟悉使用

四、综合实例

  1、输入数字n,在屏幕上输出n层的杨辉三角形。

  控制器代码:  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace WebApplication1.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index(int n=)//此处的a=0表示默认值
{
if (n == )
{
ViewData["d1"] = null;
}
else
{
int[,] a;
a = new int[n,n];
for (int i = ; i < n; i++)
{
a[i, ] = ;
}
for (int i = ; i < n; i++)
{
for (int j = ; j <= i; j++)
{
a[i, j] = a[i - , j - ] + a[i - , j];
}
}
ViewData["d1"] = a;
}
return View();
}
}
}

  视图代码:  

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@if (ViewData["d1"] != null)
{
<table style="width: 100%; border-color:black; padding:0px; border-collapse:collapse;" border=''>
@{
int[,] a = (int[,])ViewData["d1"];
for (int i = ; i < a.GetLength(); i++)
{
<tr>
@for (int j = ; j <= i; j++)
{
<td>@(a[i, j])</td>
}
</tr>
}
}
</table>
}
</div>
<div>
<form action="/home/index">
<input type="text" name="n" /><input type="submit" />
</form>
</div>
</body>
</html>

  2、结合数据库知识,完成一个能对数据库实现简单“增删改查”的项目。

mvc_第一章后入门_第一遍_控制器和视图的更多相关文章

  1. Kettle解决方案: 第一章ETL入门

    第一章ETL入门 1.1 OLPT和数据仓库对比 普通的事务系统和商业智能系统(BI)有什么区别? 1个独立的普通事务系统也被称为在线事务处理系统(OLTP) 商业智能系统也常被称为决策支持系统(DS ...

  2. Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门

    本章将涵盖以下话题: ž  MyBatis是什么? ž  为什么选择MyBatis? ž  MyBatis安装配置 ž  域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...

  3. 第一章 Kubernetes入门

    第一章 Kubernetes入门 kubernetes是基于容器技术的分布式架构领先方案,是一个完备的分布式系统支撑平台. kubernetes带来的好处:1)全面拥抱微服务:2)统可以随时随地整体“ ...

  4. MySQL----MySQL数据库入门----第一章 数据库入门

    第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...

  5. 《C# to IL》第一章 IL入门

    我们用C#.VB.NET语言编写的代码最终都会被编译成程序集或IL.因此用VB.NET编写的代码可以在C#中修改,随后在COBOL中使用.因此,理解IL是非常有必要的. 一旦熟悉了IL,理解.NET技 ...

  6. ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇

    ASP.NET自定义控件组件开发 第一章 第三篇   第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...

  7. Python之旅_第一章Python入门

    一.编程语言分类 1.机器语言:即计算机能听懂的二进制语言,0000 0001,直接操控硬件: 2.汇编语言:简写的英文标识符代替二进制语言,本质同样是直接操控硬件: 3.高级语言:用更贴近人类的语言 ...

  8. 鱼书_第一章_Python入门

    Python版本 Python有Python 2.x和Python 3.x两个版本.两个版本不兼容,可能出现用Python 3.x编的代码不能被Python 2.x执行的情况. Python安装 An ...

  9. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem D: LC-Display(模拟计算器显示数字)

    Problem D: LC-Display Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 14  Solved: 3[Submit][Status][We ...

随机推荐

  1. 【jsp】案例:显示商品列表 & 问题:List内添加元素,为什么值都变成一样的了

    代码: 1.Product: package domain; public class Product { /* `pid` varchar(50) NOT NULL, `pname` varchar ...

  2. ubuntu 18.04 设置静态ip方法

    1. 前言 本教程将会演示如何设置Ubuntu16.04 Server版和Ubuntu18.04 Server版系统的静态固定IP地址. 2. 确认你要修改的网卡号 先确认你要修改的网卡号,假设你的服 ...

  3. K8S当中的本地卷(Local PV)的使用

    Local PV是从kuberntes 1.10开始引入,本质目的是为了解决hostPath的缺陷.通过PV控制器与Scheduler的结合,会对local PV做针对性的逻辑处理,从而,让Pod在多 ...

  4. django 解析上传xls文件

    1.解析上传数据 class DataUploadAPIView(APIView): # authentication_classes = (JSONWebTokenAuthentication, S ...

  5. python操作mysql(增、删、改、查)

    用python操作数据库,特别是做性能测试造存量数据时特别简单方便,比存储过程方便多了. 连接数据库 前提:安装mysql.python,参考:https://www.cnblogs.com/Uncl ...

  6. Excel-自定义单元格、填充柄

    数据分析是指用适当的统计分析方法对收集来的大量数据进行分析, 提取有用信息和形成结论而对数据加以详细研究和概括总结的过程. 工具:EXCEL,sql,SAS,SPSS,R,Python.Hadoop. ...

  7. Anaconda3(4)安装pytorch

    安装链接 https://pytorch.org/ 0在anaconda3安装python3.6环境  https://blog.csdn.net/u012005313/article/details ...

  8. 洛谷p2827蚯蚓题解

    题目 算法标签里的算法什么的都不会啊 什么二叉堆?? qbxt出去学习的时候讲的,一段时间之前做的,现在才写到博客上的 维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那 ...

  9. PATB1031查验身份证

    这一题遇见的错误有很多,学会了一些知识点 使用了strcpy函数,前是需要复制的数组,后面是被复制的数组 关于字符,如果是非数字可以使用 <='9' && >='0'来判断 ...

  10. git中ignore文件配置

    在项目中我们有一些文件是不能公开的,或者说是每个人需要单独配置的,那么这个时候使用 git 就不能上传这些文件.此时就需要对 .gitignore 文件进行配置. git 的忽略原则:参考 廖雪峰的g ...