今天上班的任务完成了,接下来写一下博客,巩固一下,再学习一些新知识。

闲话不多说,我们言归正传。昨天讲到了如何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成长记录(二)的更多相关文章

  1. .net MVC成长记录(一)

    今天第一次写博客,之前从学校出来,学了ASP.NET, 现在第一份工作接触的是MVC,在此便记录和分享一下学习MVC的过程,希望能和大家多一些交流.言归正传,首先给大家介绍一下MVC的基础知识. MV ...

  2. .net MVC成长记录(四)Linq(1)

    今天不忙,没什么事情,继续写写随笔. 之前的文章写到了EF,很多人留言EF的操作用什么?  今天,就继续给大家分享EF的操作, Linq . 先从Linq操作Object内置对象开始 从Linq的基础 ...

  3. 蓝色的成长记录——追逐DBA(8):为了夺回SP报告,回顾oracle的STATSPACK实验

    ***********************************************声明*************************************************** ...

  4. ASP.NET MVC 描述类型(二)

    ASP.NET MVC 描述类型(二) 前言 上个篇幅中说到ControllerDescriptor类型的由来过程,对于ControllerDescriptor类型来言ActionDescriptor ...

  5. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...

  6. ASP.NET MVC Model绑定(二)

    ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程 ...

  7. ASP.NET MVC Model元数据(二)

    ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  9. ASP.NET MVC 控制器激活(二)

    ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...

随机推荐

  1. Light Oj - 1134 Be Efficient

    题目传送门:Be Efficient 题意:输入n和m,然后输入有n个元素的一个序列,问有多少个子序列元素的和能整除m. 思路:求前缀和,利用一个前缀的一个定理求解. 前缀和的一个定理是:每次求的前缀 ...

  2. JAVA学习总结-常用数据结构

    java中集合框架其实就是数据结构的实现的封装; 参考资料:任小龙教学视频 1,什么是数据结构? 数据结构是计算机存储,组织数据的方式; 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合; ...

  3. CDOJ 888 Absurdistan Roads

    Absurdistan Roads Time Limit: 5678/3456MS (Java/Others)     Memory Limit: 65432/65432KB (Java/Others ...

  4. Boolean Expressions

    Boolean Expressions Time Limit: 1000MS   Memory Limit: 30000K       Description The objective of the ...

  5. 233 Matrix 矩阵快速幂

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  6. Network Saboteur POJ 2531 回溯搜索

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12886   Accepted: 6187 Description A un ...

  7. Spring cloud config配置文件加密解密

    Spring cloud config配置文件加密解密 学习了:http://blog.csdn.net/u010475041/article/details/78110349 学习了:<Spr ...

  8. 2014 北京 DevFest 大会能够报名啦,小伙伴们还在等什么

    一年一度的大型开发人员活动,2014 北京 DevFest 大会站点正式上线: http://devfest.gdgbeijing.org/. 还等什么,開始报名了! 今年 DevFest 大会将再次 ...

  9. log_archive_dest_1设置报错

    DG搭建完之后,又报错: Tue Dec 22 16:24:33 2015 Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_arc1_2994 ...

  10. POJ题目1947 Rebuilding Roads(树形dp)

    Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 9957   Accepted: 4537 ...