View详解
Razor视图引擎简介
HtmlHelper
强类型页面

Razor视图引擎简介
强大的@:表示使用C#代码,相当于aspx中的<%%>
可以完成输出功能
当遇到html标签时会认为C#代码结束,贪婪匹配后面的内容,如@a1会认为是变量a1,如@a<br>1会认为是变量a
会对标签内容进行Html编码
注释:@*注释内容*@
注意:@变量表示输出,结尾不加分号
引入命名空间:@using 命名空间;

HtmlHelper
Helper:是为了方便View的开发而产生的
HtmlHelper的演变
普通链接:<a href="/home/index">首页</a>
当路由规则改变时,几乎所有的超连接都要更改
借助Url根据路由规则生成链接地址:<a href=“@Url.Action(”Index“,”Home“)”>首页</a>
缺陷是不能编译时排错,只有运行时才知道是否正确
专门用于MVC的链接方式:Html.Action(“Home”,“Index”),会根据路由规则生成a标记,并且在运行时可以进行有效性检查,不需要用户点击链接后才知道链接出错了
Raw:输出
Encode:进行Html编码
Action:服务器端其它页面

表单控件
类型一:Html.**(),以字符串为参数
类型二:Html.**For(),以Expression<Func<TObject,TProperty>>为参数,一般用于强类型页面
自动装配:根据参数生成控件的name、id属性,赋值会根据ViewData中同名键获取数据赋值给value属性
注意:结尾不加分号

表单方式一:using(Html.BeginForm(actionName,controllerName)){…}
表单方式二:
@Html.BeginForm(actionName,controllerName)

@{Html.EndForm();}

标签框:Html.Label(string expression,string text):会生成一个label标记,并显示text内容
文本框:Html.TextBox(“AA”);//会自动取ViewDate中键为AA的值,同时会以“AA”作为生成的HTML控件的id与name属性的值
隐藏域:Html.Hidden(“AA”)//同TextBox
注意:没有提交按钮、按钮的封装

复选框:Html.Checkbox(name)//被翻译成一个checkbox与一个hidden
单选按钮:Html.RadioButton(name,value,isChecked)//被翻译成radio控件
DropDownList:在Action中向ViewData中传递一个List<SelectListItem>集合,在View中指向ViewData的参数,则会以下拉列表的形式展示数据

强类型视图
手动创建强类型视图
在ViewModel中创建一个类型
在Action中为ViewData.Model赋值
在View中使用“@model 类型”设置
根据菜单创建强类型视图
优点
在编译时可以完成代码检验
智能提示

使用表单的**For系列控件
要求使用强类型页面
强类型的优点:可以在编译阶段进行代码检查
在Action中为ViewData.Model赋值
将View页面做成强类型页面
使用Html.**For(model=>model.Property)的格式调用,参数为一个lambda表达式,可以根据对象的属性快速生成表单控件

Controller详解
一般继承自Controller类,类Controller继承自ControllerBase,实现了IController接口
Action的本质就是类中的公有方法,可以进行重载,要求参数不同
可以接收客户端的Get或Post请求,如果希望某个方法只处理某一种请求,可以在方法前加特性[HttpGet]或[HttpPost],处理请求时会根据参数进行相应方法的调用
也可以通过路由规则传递数据

接收参数
方式一:使用Request根据key接收value
方式二:自动装备,在方法的参数位置,定义类型及参数名称,mvc会自动匹配相同名称的属性值,即匹配input的name与对象的属性相同名称的值
还可以完成自定义类型参数的封装
自动装配的要求:参数的名称或对象类型的属性必须与参数的键相同

返回结果
返回类型为ActionResult,是一个抽象类,需要返回具体类型的结果对象

直接或间接继承自ActionResult的类型
ViewResult:使用View()可以指定一个页面,也可以指定传递的模型对象,如果没有指定参数则表示返回与Action同名的页面
ContentResult:使用Content(string content)返回一个原始字符串
RedirectResult:使用Redirect(string url)将结果转到其它的Action
JsonResult:使用Json(object data)将data序列化为json数据并返回,推荐加上JsonRequestBehavior.AllowGet可以处理Get请求,一般结合客户端的ajax请求进行返回

如果控制器类建立在当前项目中,则需要放到Controller文件夹中
控制器可以从当前项目中分离出来,放到其它的项目中,本质就是将类定义到其它的项目中

Asp.Net MVC part2 View、Controller详解的更多相关文章

  1. ASP.NET MVC教程二:ASP.NET MVC应用程序结构详解

    在上一篇文章中,讲解了一些MVC的概念,并且创建了第一个ASP.NET MVC项目,这篇文章将讲解ASP.NET MVC程序中的代码解构,新创建的MVC应用程序解构如下图所示: 一.App_Data ...

  2. ASP.NET MVC5基础-控制器(Controller)详解

    在上文ASP.NET MVC5基础 – MVC文件架构中我们简单了解了下控制器Controller的作用,本文我将详细介绍控制器Controller的使用方法. Controller的运行过程 上文我 ...

  3. Attribute自定义特性+Asp.net MVC中的filter详解

    转载自:http://blog.csdn.net/wangyy130/article/details/44241957 一.filter简介 在了解自定义特性前,先引入一个概念filter,它是MVC ...

  4. asp.net mvc global.asax文件详解

    一.文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 .NET Fram ...

  5. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  6. SurfaceView 与view区别详解

    SurfaceView 与view区别详解 https://blog.csdn.net/u011339364/article/details/83347109 2018年10月24日 17:20:08 ...

  7. 【转】ASP.NET MVC学习笔记-Controller的ActionResult

    1. 返回ViewResult public ActionResult Index()   {       ViewData["Message"] = "Welcome ...

  8. ASP.NET MVC 3.0 Controller基础

    ASP.NET MVC 3.0 Controller基础   1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...

  9. 返璞归真 asp.net mvc (4) - View/ViewEngine

    原文:返璞归真 asp.net mvc (4) - View/ViewEngine [索引页] [源码下载] 返璞归真 asp.net mvc (4) - View/ViewEngine 作者:web ...

随机推荐

  1. IDEA2017 使用(二)

    1.鼠标悬浮在方法上显示api 2.关闭拼写检查 3.自动导入包(存在多个包时需要手动导入) 4.设置方法线

  2. es6+最佳入门实践(8)

    8.Promise 8.1.什么是异步? 要理解异步,首先,从同步代码开始说 alert(1) alert(2) 像上面的代码,执行顺序是从上到下,先后弹出1和2,这种代码叫做同步代码 alert(0 ...

  3. AngularJS+BootStrap的一些插件

    插件网址:http://jquerypluginplus.com/ 树  1.angular-bootstrap-nav-tree http://jquerypluginplus.com/angula ...

  4. lucene、solr、nutch三者的关系

    lucene是一个做搜索用的类库. nutch和solr都是基于lucene的,二者都是可直接运行的应用程序: 直接在业务上使用lucene的倒是不太多见. solr主要提供了建立索引(用户可以直接p ...

  5. tomcat:tomcat的OutOfMemoryError解决

    最近在熟悉一个开发了有几年的项目,需要把数据库从mysql移植到oracle,首先把jdbc的连接指向 mysql,打包放到tomcat里面,可以跑起来,没有问题,可是当把jdbc连接指向oracle ...

  6. All in One到”分布式“迁移过程中的坑

    为什么“分布式”要加引号? 与其他公司提高并发性能的场景可能不太一样,我们的系统之前是多个模块共用一个tomcat来运行的(All in One),模块有很多,光安装包就几十个.当某个模块或某几个模块 ...

  7. 【Foreign】树 [prufer编码][DP]

    树 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 3 2 2 1 Sample Outp ...

  8. tyvj1048 田忌赛马

    描述     中国古代的历史故事“田忌赛马”是为大家所熟知的.话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱.现在每匹马的速 ...

  9. POJ1220(大数进制转换)

    NUMBER BASE CONVERSION Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4652   Accepted: ...

  10. 最新Python异步编程详解

    我们都知道对于I/O相关的程序来说,异步编程可以大幅度的提高系统的吞吐量,因为在某个I/O操作的读写过程中,系统可以先去处理其它的操作(通常是其它的I/O操作),那么Python中是如何实现异步编程的 ...