习惯了多年的WEB FORM开发方式,突然转向MVC,一下子懵了,晕头转向,好多不习惯,好多不明白,直到现在也没弄明白,只好先记下来,在应用中一一求解。

主要集中在视图(View)这里。

1、@Html

视图这里到处是@Html.***,那么这个Html从哪里冒出来的?也不见有声明。

实际上Html是ViewPage的一个HtmlHelper类型的属性,因此它无需声明。

2、也跟这个HtmlHelper有关。

扩展一下这个原始类型HtmlHelper,比如有以下代码

namespace System.Web.Mvc.Html
{
public static class HtmlExtensions
{
public static string Span(this HtmlHelper helper, string strId, string strContent)
{
return string.Format("<span id=\"{0}\">{1}</span>", strId, strContent);
}
}
}

在视图页面,调用如下

@Html.Span("span1","这是一个span")

看到没,定义的时候明明是3个参数,怎么调用时候只有2个?

说明我长时间闭塞,已经落后太多了。

实际上,第一个参数有this修饰符,代表该方法用于第一个参数这种类型的对象。比如在上面的代码中,Span这个方法,就是用于HtmlHelper这种类型的对象。

3、Model

在视图里面,Model也是一个类似Html一样的东西,无须定义就可以使用。实际上,Model是ViewData的属性。但不知道为什么,像ViewPage、ViewData这些东西都不用显示出来的。

4、lambda表达式

比如 @Html.TextBoxFor(m => m.Name)

嗨!这个m又是从哪里冒出来的?总不至于,它又是谁谁谁的属性吧。其实,将m换成其他名字一样成立,比如 @Html.TextBoxFor(y => y.Name),一点问题没有。

lambda表达式其实就是匿名函数,如 x => x*x,x是参数,x*x是函数体。并且,系统会根据函数体来猜测这个x的类型,比如在这里,x估计就是数值型。

同样,在视图里面,我估计是有个视图引擎之类的东西会根据lambda表达式来猜测出我们想用的是那个Model对象,并且做了相应的处理。

这并没有什么好奇怪的。就好比做网页,我们写了一些HTML代码,再嵌上一点CSS、javascript什么的,结果就出现了绚丽多彩的网页。这几行代码就有如此魔力?不是的,关键在于浏览器,正因为浏览器根据代码做了相应的处理和呈现,才有多姿多彩的网页,核心在于浏览器。如果用记事本打开,将只是几行代码而已。

新手对ASP.NET MVC的疑惑的更多相关文章

  1. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  2. ASP.NET MVC 5 入门指南汇总

    经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...

  3. ASP.NET MVC 教程汇总

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  4. ASP.NET MVC 5 入门摘要

    翻译和编辑的第一阶段后,.我们已经发出12片ASP.NET MVC 5入门文章. 他们中的大多数来自翻译ASP.NET MVC 5 官方教程,因为本系列文章言简意赅,篇幅适中,从一个web站点演示样例 ...

  5. 全网最全ASP.NET MVC 教程汇总

    全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...

  6. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  7. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总【转】

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html ...

  8. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

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

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

随机推荐

  1. Struts2之一 初体验

    Struts2 框架是基于MV模式开发的,它提供了一个核心控制器,用于对所有的请求进行统一处理,这个控制器是由一个名为FilterDispatcher的Servlet过滤器来充当的. 01.需要在we ...

  2. iOS动画——DynamicAnimate

    力学动画 以dynamicAnimate为首的力学动画是苹果在iOS7加入的API,里面包含了很多力学行为,这套API是基于Box2d实现的.其中包含了重力.碰撞.推.甩.和自定义行为. 涉及到的类如 ...

  3. 9.Hierarchy Editor

    Hierarchy Editor(层次编辑器) 用于定义3D图层的结构,向Ventuz渲染引擎发出“命令”,并指定命令的发生顺序.通常,每个层次节点都会导致对GPU的一个或多个调用,例如设置材质或渲染 ...

  4. Java&Xml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  5. drupal 8——打补丁(patch)

    druapl 的核心可能会有漏洞,这时就需要我们去打补丁.很多补丁都已经有人写好了,我这里讲的就是如何去打这些已经写好的补丁. 对于这个问题:drupal8 核心有bug导致了两个相同的错误提示的出现 ...

  6. C#入门经典 Chapter1&2

    Chapter1 1.1 .Net Framework的内容 主要包含一个庞大的代码库,可以在客户端通过OOP来使用这些代码(OOP:Object Oriented Programming面对对象程序 ...

  7. PHP第二阶段学习 一、php的基本语法

    php的基本语法 输出语句:a.  echo输出:可以输出多个字符串,逗号隔开 b.  print输出:只能输出一个字符串,返回true或false c.  print_r():可以把字符串和数字简单 ...

  8. 从CSDN转到cnblogs了

    之前一直用的CSDN的博客,网站卡慢经常出问题,发布文章要审核,连修改几个标点符号也要审核,这些我都忍了,毕竟之前发的文章舍不得弃掉. 现在竟然无故封禁我的博客?请问我写的都是技术文章,有哪点违反规定 ...

  9. Linux 通过cksum 来判断文件是否是相同

    1. 最近scp部署文件时 发现日期会发生变化 (刚查了下 可以使用 -p 命令进行处理) 会变成部署时的日期. 不好判断文件倒是有没有部署 2. 最简单的办法 我mount了 补丁服务器  到lin ...

  10. jenkins配置邮件通知

    参考: https://www.cnblogs.com/imyalost/p/8781759.html 谢谢大佬~