1.ASP.NET两种开发模式的简单比较(WebForm和MVC)

(1)WebForm开发模式

当用户输入网址https://i.cnblogs.com/EditPosts.aspx?opt=1进行请求服务器的时候,服务器首先会判断是否存在这个页面,然后就会找到相应的页面,处理相应的代码,也就是

执行(.cs文件),然后通过这个文件程序访问数据库,将用户需要的内容读取出来,然后返回到用户访问的页面。

所以WebForm 的开发模式就是通过URL访问服务器上对应的(ASPX)文件,并将codeBehind代码的处理结果返回给用户的过程。

(2)MVC开发模式

当用户输入网址https://i.cnblogs.com/home/Index,这个网址并不是映射相应的文件处理程序,而是将其交个Controller对请求的逻辑进行处理,找到Controller下的相应的行为,然后返回对应View给客户端。

对于WebForm开发模式,微软提供了大量的服务端控件,可以快速上上手,开发效率快,但是由于封装的比较厉害,很多底层的原理不是很明了,对于UI层来说aspx和aspx.cs这两个文件一个是页面展示,一个后台逻辑,他们是父子关系,所以具有较强的耦合性

MVC:M:model V:View  C:controller,通常认为MVC只是UI层的逻辑分块,此时的Model也就是VIewModel,但是通常在架构的使用的时候,将这个Model同时也用在其他例如DAL和BLL层,MVC将控制器逻辑和页面的展示View进行了解耦,降低 耦合性

2.MVC的简单的使用

前台:(Register对应的View)

<form method="Post" action="home/AddUser">

用户名:<input type ="text" name=“userName”>

密码:<input type="password" name ="pwd">

<input type="submit" value="添加">

</form>

后台HomeController

public ActionResult Register

{

  reutrn View();

}

public ActionResult AddUser()

{

string name =Request["userName"];

......

int result= dbContext.SaveChanged();

if(result>0)

{

return Content("t添加成功");

}

else

{

  return Content("添加失败");

}

}

对于控制器中的行为获取表单中的数值,MVC提供了很多遍历的方式,就是可以将AddUser改造为

public ActionResult AddUser(string userName,string pwd)

{

  此时userName和pwd变量就可以直接使用,MVC会进行处理,也就是将form表单的数据与参数变量对应

需要注意:参数变量的名称一定要和表单中的名称一致

}

public ActionResult AddUser(User user)

{

  此时user会和MVC中的Model进行对应,所以要求表单中数据的命名一定要和Model中定义的变量名称是一致的。

}

从上面的两种方式可以大大简化了开发人员的操作,同时可以发现在MVC中存在着许许多多的约束,这些约束标准,代替了频繁的配置,只有按照约束,MVC才可以更加的得心应手的使用,方便开发人员开发。

3.ActionResult

这是一个父类型,它的常用的子类型有:ViewResult(return View())、ContentResult( return Content("ss"))、RedirectResult(return Redirect("url")或者return RedirectToAction(控制器,行为))等

备注1:本文参考了博客http://www.cnblogs.com/edisonchou/p/3911558.html

备注2:本人只是刚开始学MVC,欢迎批评指正

MVC认识的更多相关文章

  1. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  2. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

  3. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  4. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  5. ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入

    原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...

  6. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  7. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  8. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

  9. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  10. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

随机推荐

  1. ti的硬件时钟和系统时钟同步

    1.hwclock -w软到硬 hwclock -s 硬到软 2. 通过ntp网络时钟控制同步 3.etc下的localtime文件和GMT-8

  2. erlang随机数问题

    一.计算机的随机数的老问题,伪随机数. random:seed() random:uniform(N) 如果seed是相同的,则第M次执行 random:uniform(N) .M.N相同,则得到的随 ...

  3. CentOS基础命令大全

    1.关机 (系统的关机.重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours: ...

  4. 【Java面试题】56 在JAVA中如何跳出当前的多重嵌套循环?

    在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环.例如, public class xunhuan { pu ...

  5. 【Java面试题】33 HashMap和Hashtable的区别

    1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和n ...

  6. maven 打包可执行jar的两种方法

    1.修改pom.xml增加如下内容 <build> <pluginManagement> <plugins> <plugin> <groupId& ...

  7. C++ 获取当前时间

    #include <time.h> #include <stdio.h> int main( void ) {     time_t t = time(0);     char ...

  8. 双十二“MathType”限时6折特惠

    MathType是由美国Design Science公司开发功能强大的公式编辑器,专门用来对数学公式的编辑,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号.双十二期间 ...

  9. vs2013配置opencv3.2.0

    工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...

  10. [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!

    计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...