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. 什么是Apache ZooKeeper?

    Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据.ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务. Zo ...

  2. js得到当前文档的编码:document.characterSet

    <!DOCTYPE HTML> <html > <head> <meta charset="utf-8"> <!--meta ...

  3. ubuntu server install 安装中文(搜狗)输入法

    1.对于ubuntu server默认无中文输入法框架,我比较倾向于我一直使用的ibus-sunpinyin.这里我需要先安装ibus的框架 不过我遇到了问题: dpkg: dependency pr ...

  4. 结构型模式概述(Structural Pattern)

    结构型模式可以描述两种不同的东西:类与类的实例.结构型模式可以分为类结构型模式和对象结构型模式. 类结构型模式关心类的组合,可以由多个类组合成一个更大的系统,在类结构型模式中只存在继承关系和实现关系: ...

  5. Linux下oracle11g 导入导出操作详细

    //用dba匿名登录 [oracle@enfo212 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Ma ...

  6. 视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析(1)

    在目前实际的视觉SLAM中,闭环检测多采用DBOW2模型https://github.com/dorian3d/DBoW2,而bag of words 又运用了数据挖掘的K-means聚类算法,笔者只 ...

  7. sql替换数据库字段中的字符

    UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE ……说明:table_n ...

  8. mysql中,查看当前数据库下所有的基表,不包括视图

    环境描述: mysql版本:5.5.57-log 操作系统版本:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求描述: 查看当前使用的 ...

  9. 世纪佳缘信息爬取存储到mysql,下载图片到本地,从数据库选取账号对其发送消息更新发信状态

    利用这种方法,可以把所有会员信息存储下来,多线程发信息,10秒钟就可以对几百个会员完成发信了. 首先是筛选信息后爬取账号信息, #-*-coding:utf-8-*- import requests, ...

  10. 从css样式表中抽取元素尺寸

    jS从样式表取值的函数.IE中以currentStyle,firefox中defaultView来获取 DOM.style仅仅能读到写在html中的样式值 获取样式值的函数 function retu ...