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. jenkins配置过程遇到的问题

    jenkins 搭建完成后,可以浏览器访问: http://localhost:8081/jenkins, 新建任务过程中遇到以下问题: 1. 源码管理不现实git, 只显示无 解决: 插件管理 -  ...

  2. 矩阵的特征值和特征向量的雅克比算法C/C++实现

    矩阵的特征值和特征向量是线性代数以及矩阵论中很重要的一个概念.在遥感领域也是经经常使用到.比方多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量. 依据普通线性代 ...

  3. 基于Poco的UTF8、UTF16、GBK、Hex之间的转换

    /******Encoding.h*******/ #include "Poco/UnicodeConverter.h" #include "Poco/Exception ...

  4. 【转载】PADS Layout将导入DXF,并转换成板框步骤

    1.在PADS Layout中选择 Import... 2.选择DXF文件(一般由结构工程师给出),直接点OK即可. 3.导入后,板框图一角视图如下.右键选择 Select Shapes,然后双击外框 ...

  5. Getting SharePoint objects (spweb, splist, splistitem) from url string

    You basically get anything in the object model with one full url: //here is the site for the url usi ...

  6. 利用jstack 找到异常代码

    1.top找出耗时pid进程或ps -ef |grep xxx 找出pid 2.ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd  3036为pid 3.prin ...

  7. 笔记:写Java程序,并输出

    建一个文件名为 demo.java的文件 //写框架文件 public class Demo{ //写入口文件 public static void main(String[] args){ Syst ...

  8. PHP实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)的绑定

    解决方案一:通过端口来区分不同的虚拟主机 ①按照绑定一个站点的方法做好准备 1. 先开发好自己的网站(d:/myblog(存放在D盘的myblog目录下)) 2. 配置httpd.conf文件(存放在 ...

  9. [Scikit-learn] Dynamic Bayesian Network - Kalman Filter

    看上去不错的网站:http://iacs-courses.seas.harvard.edu/courses/am207/blog/lecture-18.html SciPy Cookbook:http ...

  10. 添加app第一次启动页面

    一.添加几个成员变量 @interface hDisplayView ()<UIScrollViewDelegate> { UIScrollView *_bigScrollView; NS ...