ASP.Net MVC的学习
套种间作,也挺有意思的——近来学习感悟。DRP学习的同时,折腾了点以前不曾学习但是却很多次耳闻过的东西——Asp.Net中的MVC架构模式。
一、是什么?
MVC,即(Model-View-Controller,模型—视图—控制器模式),和三层类似,用于表示一种软件架构模式。在这种模式下,将系统的实现分为模型Model,视图View,控制器Controlller。其中Model:对数据库的操作和一般的业务逻辑。View:负责做出和用户交互的显示;Controller:处理Request和Response请求,是View层访问Model层的中介。
二、具体实现。
通过一个具体的例子来看MVC的具体实现
首先:新建一个MVC 3 web应用程序

PS:MVC3和MVC4,我查阅了相关的资料,自己的理解是:在整体的架构和实现上没有太大的变化,变化的只是其中具体的一个类或者接口等变化。
因为其大致流程是Request请求——→Controller——→Model然后返回给View进行显示,所以从最底层开始实现。
1)Model
在Model文件夹内建立一个Login_BS类。因为只是简单实现,所以并没有进行对数据库进行操作,只是了解MVC实现流程和原理。
<span style="font-family:KaiTi_GB2312;"><span style="font-size:18px;"> </span><span style="font-size:14px;">public class Login_BS {
public bool Login(string username, string password)
{
if (username == "1" && password == "1")
{
return true;
}
else
{
return false;
}
}
}
</span></span>
2)Controllers
然后在Controllers 文件夹上右键,添加控制器

注意:其中Controller前面部分为改控制器被调用的名称,也就是表单提交的地方为Login
其具体代码如下:
<span style="font-size:18px;"> </span><span style="font-family:KaiTi_GB2312;font-size:14px;">public class LoginController : Controller
{
//
// GET: /Login/ public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]//表单提交方式
public void index(string username, string password)
{
Models.Login_BS loginbs = new Models.Login_BS();
//username = Request.QueryString["username"];这是get方式提交获取数据
//password = Request.QueryString["password"];
if (loginbs.Login(username, password))
{
Response.Write("登陆成功" + username);
}
else
{
Response.Write("登录失败" + username);
}
} }</span><span style="font-size:18px;">
</span>
然后在其中的Index()方法右键添加视图

之后,在View文件夹下面,会自动多出一个Login文件夹,在Login文件下面,会有一个名称为Index(添加视图时自己取得名字)后缀名为cshtml的文件,这就是我们添加的控制器所对应的View视图。添加具体的表单和控件:
具体代码如下:
3)View
<span style="font-family:KaiTi_GB2312;font-size:14px;">View视图代码:
@{
Layout = null;
} <title>Index</title> <div>
<form action="/Login" method="post">
<p>用户名:<input type="text" name="username"></p>
<p>密码:<input type="password" name="password"></p>
<p>
<input type="submit" value="登陆"></p>
</form>
</div> </span>
4、自己理解
直接运行程序,我们会发现404页面,为什么明明有View视图却不显示?其实,这涉及到MVC模式的具体分工问题。就像在DRP中Model2模式和同学讨论的那样:严格 model2模式(MVC)模式下JSP直接绘制好的页面是不存在的?因为每个需要显示的页面,都必须经由一个servlet进行处理之后才由jsp进行绘制出来,也就是不访问servlet,就不会有对应的jsp绘制好的Html页面(纯属自己的理解,如有不同意见可以交流)。回到Asp.net 中,MVC中,用户访问的地址并不映射到服务器中对应的文件,而是映射到对应Control里对应的ActionMethod,由ActionMethod来决定返回用户什么样的信息。而把用户访问的地址对应到对应的Action(当然也可以是对应的文件)的工作有路由系统完成,这其中许多复杂的处理由.net自动完成,而开发者需要告诉.net用户的访问地址和对应Action的具体映射关系。我们直接运行程序,并没有映射到对应的Action方法,因此显示404页面也就很正常了。
如果我们想要显示出具体页面。需要再地址栏中加入对应的请求访问方法Action方法就可以了,也就是我们表单提交的地址/Login结果就可以出来了。

<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPGgxPsj9oaK21LHIyP2y46O6PC9oMT4KPHA+oaGhodK7uPa63MP3z9S1xMf4sfCjus/gttSxyNPryP2y46Oso82j1qPDvNy5ucSjyr3W0KOsysfDu9PQYXNweC5jc87EvP61xKGj1eLSssrHTVZDxKPKvbyrwaax3MPitcSho9LyzqrI57n70rPD5sjnufvT0LT6wuujrL7N19TIu7D8uqzBy8LfvK2jrMTHw7S+zbK7ysdNVkPBy6Gj1NpNVkPA78Pmo6zK0828o6hWaWV3o6m5y8P7y7zS5aOs1rvKx8/Uyr7E2sjdtcTSu7j21NjM5aOsy/zX1Ly60qqyu9Kqz9TKvqOs0qrP1Mq+yrLDtMTayN2jrMirsr/Tyb/Y1sbG9yhDb250cm9sbGVyKb72tqiho9Xi0fnX7sP3z9S1xNK7uPa6w7Smvs3Kx6O6yrXP1lZpZXe6zUNvbnRyb2xsZXJztcS94vHuoaM8L3A+CjxwPqGhoaHB7dK7uPbU2tPayrXP1tStwO2jqMH3s8yjqbXEsrvNrKO6PC9wPgo8cD6hoaGhoaHSu7DjYXNweMq1z9ajujwvcD4KPHA+oaGhoaGhPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140821/20140821104809184.png" alt="\">
而MVC则是:

保留一个问题:View是经过Controller的‘同意’和Model交互?还是View和Controller交互,而Controller和Model交互?
ASP.Net MVC的学习的更多相关文章
- ASP.NET MVC 5 学习教程:快速入门
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...
- ASP.NET MVC 5 学习教程:添加验证
原文 ASP.NET MVC 5 学习教程:添加验证 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...
- ASP.NET MVC 5 学习教程:添加查询
原文 ASP.NET MVC 5 学习教程:添加查询 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...
- ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB
原文 ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- ASP.NET MVC 5 学习教程:通过控制器访问模型的数据
原文 ASP.NET MVC 5 学习教程:通过控制器访问模型的数据 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连 ...
- ASP.NET MVC 5 学习教程:创建连接字符串
原文 ASP.NET MVC 5 学习教程:创建连接字符串 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
随机推荐
- 搭建 Visual Studio 2012 + DXperience-13.2.6 + MySql 开发平台
一. 开发环境 1. 此开发平台主要用来开发基于.NET 4.0及以上版本的应用 2. 点击此下载 Visual Studio 2012 Ultimate 中文版开发工具 3. 点击此下载 DXper ...
- PAT 1052. Linked List Sorting
这场考试当年还参加了,当时直接用内置的排序了,否则自己写归并排序浪费时间啊,现在来练习一发.估计又有些节点没在链表里面,当时没考虑这个情况,所以一直有些case没过 #include <iost ...
- 移动端HTML5实现文件上传
PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现. 用的技术 ...
- Python 关于bytes类方法对数字转换的误区, Json的重要性
本文起源于一次犯错, 在发觉bytes()里面可以填数字, 转出来的也是bytes类型, 就心急把里面的东西decode出来. 结果为空.搞来搞去以为是命令不熟练事实上错在逻辑. a1 = bytes ...
- [HttpException (0x80004005): 应用程序已预编译,因此不允许使用目录“/App_Code/”。]
删除网站下的PrecompiledApp.config文件即可.
- EasyNetQ简单使用
class Program { static void Main(string[] args) { //打开消息确认机制 using (var bus = RabbitHutch.CreateBus( ...
- Web Api ——创建WebAPI
方法在Win10 + VS2017(MVC5)测试通过 1.建立 WebApi项目: 选择菜单 “文件->新建醒目->web ->ASP.NET Web 应用程序” 输入项目名称和位 ...
- Same Tree 比较两个二叉树是否完全相同
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- No value specified for 'Date'错误
今天使用 BeanUtils.copyProperties(m,n); 遇到 No value specified for 'Date' 这个错误,以前用的时候都不需要加 try 今天使用发现需 ...
- 4.Bootstrap基础总结
一.Bootstrap 网格系统 二.Bootstrap 排版 三.Bootstrap 代码 四.Bootstrap 表格 五.Bootstrap 表单 六.Bootstrap 按钮 七.Bootst ...