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. 51nod 扔盘子

    题目传送门 这道题一开始写了n方的算法 果不其然 它T了 所以就想想o(n)的算法 写不出来 就像sbzhq学习了一下 这道题啊 要维护一下从深度1到n每一段的最小值以及他的位置 然后就暴力搞一搞就o ...

  2. 2017年上海金马五校程序设计竞赛:Problem C : Count the Number (模拟)

    Description Given n numbers, your task is to insert '+' or '-' in front of each number to construct ...

  3. Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载

    当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...

  4. HDU2819(二分图匹配,记录过程)

    Swap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. Linux-进程间通信(二): FIFO

    1. FIFO: FIFO也被成为命名管道,因其通过路径关系绑定,可以用于任意进程间通信,而普通无名管道只能用于有共同祖先的进行直接通信; 命名管道也是半双工的,open管道的时候不要以读写方式打开, ...

  6. scrapy模拟知乎登录(无验证码机制)

    ---恢复内容开始--- spiders 文件夹下新建zhihu.py文件(从dos窗口中进入虚拟环境,再进入工程目录之后输入命令 scrapy genspider zhihu www.zhihu.c ...

  7. ipad/iphone中的前端调试

    需要在ipad上调试代码, 经过一番搜索(多在google搜到的), 稍微整理下 : ). 1. Settings -> Safari -> Advanced/Developer -> ...

  8. selenium 3.0 键盘事件 +强制结束chromedriver进程代码

    selenium自动化测试常常用到键盘操作,一下是键盘操作的详细操作,和部分代码.截图来自于虫师的自动化相关书籍. public static void main(String[] args) thr ...

  9. Django-ContentType

    背景:学位课.专题课.价格策略(每一种课程(学位课和专题课下可分为不同的种类的课程)在不同学习时间内的价格不同) 例如:如何将课程表与价格策略表关联起来: 用外键是可以将课程表和价格策略表关联起来的, ...

  10. ros msg array

    #include <stdio.h> #include <stdlib.h> #include "ros/ros.h" #include "std ...