.net MVC成长记录(二)
今天上班的任务完成了,接下来写一下博客,巩固一下,再学习一些新知识。
闲话不多说,我们言归正传。昨天讲到了如何mvc框架在微软下,已经变成了一个非常灵活非常‘干净’的开发框架了, 同时也讲述了如何创建一个MVC的项目和属于自己的页面,今天
继续探讨MVC的模型、控制器、视图和传统的html页面的异同。
html , 如我们所熟知,是一种超文本的标记语言,读写简易,拓展性强;
cshtml, 是在MVC3.0之后出现的新特性,基础的方法仍然是html的格式,同时也增加了一种新的方式(基于html的,浏览器解析后是一样的)
举个例子:
Html.BeginForm()
该方法用于构建一个From表单的开始,他的构造方法为:
Html.BeginForm("ActionName","ControllerName",FormMethod.method)
一般构建一个表单结构如下
他将在客户端产生一个类似<form action="/account/login" method="post"></form>标签
同样的,还有很多 @Html.XXX 注意在页面上,@符号的使用,可以理解为一种声明MVC特性
所以,我们总结一下: 不管是用html的标签,还是用@.html 标签, 都可以实现我们想要的功能, 但是MVC仅此而已吗? 当然不是了, 下面介绍下,MVC灵活和强大的地方
首先是值的传递
MVC传值交互这一块儿,大致分为一下几种
1、ViewBag
2、ViewData
3、TempData
4、使用普通方式传递 return View( 需要传递的 )
5、使用强类型传递 return View(需要传递的 )
为什么微软会推出这种传递方式呢?
我们先看一下用法。
首先是ViewBag , 使用的范围很广, 可以同一个View 视图中,声明传值
@{
ViewBag.msg = "我的第一个ViewBag"
}
<p> @ViewBag.msg </p>
这时候浏览器解析得到的<p>标签里就是 我的第一个ViewBag 这句话。
如果是在控制器Controler中, 同样可以使用
public AcitonResult myViewBag()
{
ViewBag.msg ="我的第一个ViewBag";
return View();
}
View视图中直接接收 @ViewBag.msg 就可以得到同样的效果,
ViewData的传递方式与之类似, 不同的地方在于ViewData是指定类型的传递, 我们在使用的时候,需要强制类型转换一下
以上两种传递, 多用于VIew-View C-View 之间的一种传递
TempData 是一种C-C之间, 且用完即清除掉的一次性传递,防止数据丢失和数据安全的
TempData[" "] = "";
普通类型传递
声明一个变量
var model = new { ... }
return(model)
页面也能通过Model接收的到 model
下面重点说一下 这个强类型视图
这个强类型视图是什么意思呢? 顾名思义,是在C-V之间的模型关系,强制限定了某一个数据模型
这样做的弊端看似局限了,实则不然, 这种限制,使得逻辑更明确,操作更简单, 数据更单一,
强视图的声明很简单, 就是一句话
在View页面最顶端写上
@model 你的Model模型类
写好这个类以后,直接就可以调用你在控制器里传递过来的对象,
举个简单的列表显示的例子
namespace demo
{
public class TbdemoList{
public List<Tbdemo> demoList {get;set;}
}
public class Tbdemo
{
private int _ID;
private int _Name;
public int ID
{
get { return _ID; }
set { _ID = value;}
}
public int Name
{
get { return _Name; }
set { _Name= value;}
}
}
}
这样一个Model写好了, 取名叫demoModel , 数据库大家就自己建吧 , 不会的朋友可以参考一下其他博友的介绍, 也可以百度一下教程
那么,在控制器里, 我们如何写?接下来,大家请看
public ActionResult Demo()
{
List<TbDemo> model = new list<Tbdemo>();
model[0] = TbDemo 的对象;
model[1] =TbDemo 的对象;
有数据库,可以直接获取到,然后逐行Datarow 方法遍历添加
return View(model);
}
传递了这个对象数组进入了View视图
使用的方法很简单
@model demo.TbdemoList
<div>
@foreach(Tbdemo t in Model.demoList )
{
<p>t.ID </P>
<p>t.Name </P>
}
</div>
这个例子用到了面向对象的一种编程思想,大家可以多看几遍, 我在学习的过程中, 也是不断的思考,不断的总结 , 我们可以看到, 这种方式,更加灵活,逻辑上也很清晰,单一
需要多少, 可以对象数组包含对象的方式, 以对象操作对象 。
今天的午休时间结束了, 下次不忙的时候,继续和大家一起学习MVC。
有其他疑问,或是想互相交流的,可以联系我的QQ: 58608576
.net MVC成长记录(二)的更多相关文章
- .net MVC成长记录(一)
今天第一次写博客,之前从学校出来,学了ASP.NET, 现在第一份工作接触的是MVC,在此便记录和分享一下学习MVC的过程,希望能和大家多一些交流.言归正传,首先给大家介绍一下MVC的基础知识. MV ...
- .net MVC成长记录(四)Linq(1)
今天不忙,没什么事情,继续写写随笔. 之前的文章写到了EF,很多人留言EF的操作用什么? 今天,就继续给大家分享EF的操作, Linq . 先从Linq操作Object内置对象开始 从Linq的基础 ...
- 蓝色的成长记录——追逐DBA(8):为了夺回SP报告,回顾oracle的STATSPACK实验
***********************************************声明*************************************************** ...
- ASP.NET MVC 描述类型(二)
ASP.NET MVC 描述类型(二) 前言 上个篇幅中说到ControllerDescriptor类型的由来过程,对于ControllerDescriptor类型来言ActionDescriptor ...
- ASP.NET MVC Model验证(二)
ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...
- ASP.NET MVC Model绑定(二)
ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程 ...
- ASP.NET MVC Model元数据(二)
ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- ASP.NET MVC 控制器激活(二)
ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...
随机推荐
- (JS,JAVA,MySql)去除小数后多余的0
分别通过JS,JAVA和MySql实现去除小数后多余的0 1. JS方法 /** *去除小数点后多余的0 */ function cutZero(old) { //拷贝一份 返回去掉零的新串 old ...
- NOD 1113矩阵快速幂
基准时间限制:3 秒 空间限制:131072 KB 分值: 40 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计算结果太大,只需要输出每个元素Mod (10^ ...
- JavaSE 学习笔记之StringBuffer(十五)
--< java.lang >-- StringBuffer字符串缓冲区: 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符. 特点: 1:可以对字符串内容进行修改. 2:是一 ...
- C# WPF 窗体传递消息
对于存在窗体的WPF程序(或者说,起码在任务栏上有个图标,即ShowInTaskbar = true),互相传递消息是很容易的. 步骤: 1,寻找窗体的句柄 2,运用windows API: Send ...
- noip模拟赛 浮游大陆的68号岛
题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无虑的,幼体的黄金妖精们过着天真烂 ...
- noip模拟赛 括号序列
题目描述LYK有一个括号序列,但这个序列不一定合法.一个合法的括号序列如下:()是合法的括号序列.若A是合法的括号序列,则(A)是合法的括号序列.若A和B分别是合法的括号序列,则AB是合法的括号序列. ...
- 洛谷 P1491 集合位置
P1491 集合位置 题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的 ...
- Linq查询datatable的记录集合
通过linq查询datatable数据集合满足条件的数据集 1.首先定义查询字段的变量,比方深度 string strDepth=查询深度的值: var dataRows = from datarow ...
- Think in ISP(image sensor pipe )之How to implement an effecitive AE
How to implement a effecitive AE. AE(自己主动曝光) 1)try Minual exposure //time,line 2)try Max exposure // ...
- 以"小刀会“的成败论当今创业成败
讲起"小刀会",熟悉的人或许非常熟悉,不熟悉的人或许根本不知道清末有这样一个组织. 依据翻查史料,最初的小刀会是在福建成立的,来源有两个.一个是天地会的分支,一个是白莲教分支. 而 ...