MVC中V与C之间的通话
来源:互联网 发布:unity3d 显示3d模型 编辑:程序博客网 时间:2024/05/17 23:08
无论是MVC还是三层,还是其他的一些框架应用,只不过是在业务处理上划分的更加的清晰明了,降低各个模块之间的耦合度。但是各个模块之间又是如何进行通信的呢?下面主要来谈一下MVC中View层与Controller之间的通信。
ModelBinding机制
在MVC中为我们方便的提供了一种叫做模型绑定机制的东西,总的来说就是在每个VIEW中,只能绑定一个Model实体,有了这种绑定的机制,就可以很方便的实现View与Controller之间的通信。如下所示:
Controller层
<span style="font-family:SimSun;font-size:18px;"> /// <summary> /// 用来实现当加载页面的时候想页面传递参数 /// </summary> /// <param name="user">实体类</param> /// <returns></returns> public ActionResult Delete(User user) { //为实体类赋值 user.className = "5465"; user.ID = "4457547"; user.Name = "214"; //把实体类传递到View中 return View(user); }</span>
View层代码
<span style="font-family:SimSun;font-size:18px;"><!--指定了 model 类型的视图 就叫做强类型视图,好处:vs可以直接推断出model的类型,从而提供只能提示--> @*@model ChanDicanshu.Models.User*@@using ChanDicanshu.Models@{ ViewBag.Title = "Delete";}<h2>Delete</h2>@*//因为有绑定机制,所以可以直接输出*@@Model.className<br />@*//这里的model就是绑定的实体*@@Model.ID<br />@Model.Name</span>
基本上就这么简单,通过模型绑定机制,方便的实现了View和Controller之间通过Model实体来进行相互通信。上述有两种方式。一种是当使用的时候绑定,一种时直接绑定强类型视图。
路由机制传递参数
先看一下MVC中的路由机制
<span style="font-family:SimSun;font-size:18px;"> public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { //忽略给定路由列表指定的URl路由 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( //路由名称 name: "Default", //Url地址 url: "{controller}/{action}/{id}", //默认的路由地址 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional} ); } }</span>
在MVC中就是通过这么一个识别地址的方式来查找到底使用那个Controller中的那个方法,最后来显示那个视图。通过这种途径,我们也可以来实现View层与Controller之间传递参数,实现起来也特别的简单,只要名字相同就可以识别。
View层代码
<span style="font-family:SimSun;font-size:18px;"><html><head> <meta name="viewport" content="width=device-width" /> <title>Index</title></head><body> @*连接到相同的Controller下的Show方法中,传递的参数为id*@ @Html.ActionLink("删除", "show", new { id = "123"})</body></html></span>
我们在View层只定义了一个链接的操作,最后会连接到相同Controller下的show方法中,但是还有传递的参数。如果你细心的话,看地址的话,会发现/Home/show/123,123就代表我们所要传递的参数。我们如何来获得呢。
Controller层代码
<span style="font-family:SimSun;font-size:18px;"> /// <summary> /// 路由机制来获得传递参数 /// </summary> /// <param name="id">这就是传递过来的参数,只要名字相同就可以识别</param> /// <returns></returns> public ActionResult Show(int id) { return View(); }</span>
Request和FormCollection
在上一篇博客中也曾提到过,通过这两个对象就可以获取表单上的数据,方便了View和Controller之间的交互。
- MVC中V与C之间的通话
- MVC中V和C的区分识别_控制层与显示层的剥离
- MVC架构中M、V、C的解释
- MVC中v和C交互
- MVC中Controller与View之间的数据传递
- vue中v-text,v-html, v-model, {{}}之间的异同
- vue中v-text,v-html, v-model, {{}}之间的异同
- Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
- 两个电话之间的SIP通话范例
- 基于网络的视频、语音通话简音过程(电脑与iphone、ipad之间)
- vector中v[i]与v.at(i)的区别
- vue中v-if与v-for的区别
- 三层架构与MVC之间的区别
- 实现thinkphp的MVC从C到V的过程,MVC的应用
- C#.NET中关于结构与类之间的区别
- [心得]C语言中整型与字符串之间的转换
- C/C++中memcpy与strcpy之间的区别
- C/C++中字符串与数字之间的转换
- 第十五周 项目1:读程序,单步调试
- Boosting(Adaboost+Haar-like人脸识别)
- flashlog.txt 不更新问题解决办法之一
- 什么是PERT网络分析?
- js 压缩
- MVC中V与C之间的通话
- ceph存储 用命令行方式关闭CentOS防火墙
- 第十五周 OJ平台-指针当形参
- C#窗体之间传递消息和事件
- OJ玩指针
- C语言流程控制续
- 项目成本的几种估算方法
- linux 下的 wchar_t
- 数数(南阳oj198)