.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;
}

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
</head>
<body>
    <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>
</body>
</html>
</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结果就可以出来了。

三、对比三层:

  一个很明显的区别:相对比与三层,MVC架构模式中,是没有aspx.cs文件的。这也是MVC模式极力避免的。因为如果页面如果有代码,就自然包含了逻辑,那么就不是MVC了。在MVC里面,视图(View)顾名思义,只是显示内容的一个载体,它自己要不要显示,要显示什么内容,全部由控制器(Controller)决定。这样最明显的一个好处就是:实现View和Controllers的解耦。

  另一个在于实现原理(流程)的不同:

   一般aspx实现:

   

  而MVC则是:

   保留一个问题:View是经过Controller的‘同意’和Model交互?还是View和Controller交互,而Controller和Model交互?

.Net MVC的学习(一),布布扣,bubuko.com

时间: 2024-10-07 06:47:40

.Net MVC的学习(一)的相关文章

(asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用

在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类.另外在MvcContrib扩展项目中也有扩展一些帮助类,这样我们就不光 只能使用完整的html来编写了需要显示的页面了,就可以使用这些帮助类来完成,但最后运行时都还是要生成html代码的. 先来看看HtmlHelper能帮我们生成一些什么样的html呢.直接看效果吧. <div>          1.使用Ht

[转]ASP.NET MVC 5 学习教程:快速入门

本教程将使用Visual Studio 2013手把手教你构建一个入门的ASP.NET MVC5 Web应用程序.本教程配套的C#源码工程可通过如下网址下载:C#版本源码链接.同时,请查阅 Building the Chapter Downloads 来完成编译源码和配置数据库. 在本教程中的源码工程,您可在Visual Studio中运行MVC 5应用程序.您也可以使Web应用程序部署到一个托管服务提供商上.微软提供免费的网络托管多达10个网站,free Windows Azure trial

mvc Bundling 学习记录

因为现在的项目JS引用很多,无意中看到了MVC4的Bundling,开始的时候感觉很不错,将所有的CSS,js文件压缩成一个文件处理,画面调用也很简单 于是,花了一个下午的时候研究了一下,并且通过各种情况进行测试 可是结果不尽如人意,其中有一个比较很让人抓狂的问题 经常做.NET的人都知道,UI画面会引用很多的插件,比如easyui,ext等等,而这些插件里面包含了很多图片引用,因为图片呢,就涉及到一个做WEB的常见难题:路径(当然,如果所有的CSS文件中图片路径都是使用的绝对路径或者项目绝对路

mvc Bundling 学习记录(一)

参考博客:http://www.cnblogs.com/xwgli/p/3296809.html 这里要详细记录的是对于现有MVC项目进行Bundling功能 1  如果没有System.Web.Optimization这个应用,则通过nuget搜索安装System.Web.Optimization   2  在web.config(两个)添加<add namespace="System.Web.Optimization" />这一行  3  Global.asax 里面添

MVC基础学习—理论篇

1.      简介 ?  定义?什么是MVC     MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. ?  VC模式和我们熟悉的WebForm模式    

第一周之mvc入门学习

公司下一个项目需要用 mvc来实现 ,在前几个月自己也看过一些mvc方面的资料但也只是了解了一下并没有达到应用的水准.自己虽然有计划过业余时间来学习mvc但是个人意志不是很坚定学了一段时间也就不了了之了.这次选用mvc来做项目我还是挺高兴,毕竟现在年轻想趁着年轻多学点东西 以后的日子会好过点吧. 这一周主要是学习的原理方面的知识和一些基础应用. 个人所以理解mvc与webfrom的几点区别吧. 1.webfrom后台类与前台页面类的关系是继承关系.mvc则后台和前台完全分离并且可以返回不同的视图

ASP.Net Mvc 5 学习记录2015-9-9

我之前一直都是学习和开发都采用ASP.Net WebForm,对MVC的一直都是一知半解,最初以为ASP.Net WebForm的N层架构就是MVC.其实N层架构设计思想是"高内聚,低耦合",也就是解耦,而非MVC的设计思想. 学习ASP.NET MVC感觉还是主要还是了解它的设计思想和设计理念.ASP.NET MVC与ASP.ENT WebForm的设计理念完全是不同的,而以前一直采用ASP.ENT WebForm编写网站.ASP.NET WebForm的2大特点:可视化布局和事件驱

Spring MVC Rest 学习 一

第一步:配置Spring MVC 核心Servlet <!-- spring mvc -->    <listener>    <!--  request.session 和  global session web作用域 -->     <listener-class>         org.springframework.web.context.request.RequestContextListener             </listene

MVC架构学习之Smarty学习——病来而蔫

前两天是五一小长假,而每次假期都想着如何如何刻苦一番,往往是自作多情.. 当然这次是有小病在身,多个借口吧. 一有病就蔫的不行...要锻炼了啊,脚估计也差不多了,游泳试试吧这周. 这次学习Smarty引擎. 一.视图引擎简介 帮助用户实现MVC中View的开发. (可以理解为View的模板 --好的视图引擎 贴近html: 语法简单易懂: 良好的缓存机制: 拓展性良好: 网络资源多 (所以先学习已有的视图引擎) --知名的 Smarty,PHPLIB 二.Smarty简介 提供了逻辑和外在内容的