Asp.Net MVC part2 View、Controller详解
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详解的更多相关文章
- ASP.NET MVC教程二:ASP.NET MVC应用程序结构详解
在上一篇文章中,讲解了一些MVC的概念,并且创建了第一个ASP.NET MVC项目,这篇文章将讲解ASP.NET MVC程序中的代码解构,新创建的MVC应用程序解构如下图所示: 一.App_Data ...
- ASP.NET MVC5基础-控制器(Controller)详解
在上文ASP.NET MVC5基础 – MVC文件架构中我们简单了解了下控制器Controller的作用,本文我将详细介绍控制器Controller的使用方法. Controller的运行过程 上文我 ...
- Attribute自定义特性+Asp.net MVC中的filter详解
转载自:http://blog.csdn.net/wangyy130/article/details/44241957 一.filter简介 在了解自定义特性前,先引入一个概念filter,它是MVC ...
- asp.net mvc global.asax文件详解
一.文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成的 .NET Fram ...
- Spring学习 6- Spring MVC (Spring MVC原理及配置详解)
百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...
- SurfaceView 与view区别详解
SurfaceView 与view区别详解 https://blog.csdn.net/u011339364/article/details/83347109 2018年10月24日 17:20:08 ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
- ASP.NET MVC 3.0 Controller基础
ASP.NET MVC 3.0 Controller基础 1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...
- 返璞归真 asp.net mvc (4) - View/ViewEngine
原文:返璞归真 asp.net mvc (4) - View/ViewEngine [索引页] [源码下载] 返璞归真 asp.net mvc (4) - View/ViewEngine 作者:web ...
随机推荐
- npm安装node-sass失败,EACCES: permission denied
增加--unsafe-perm,即 sudo npm install node-sass --unsafe-perm --save-dev 成功安装node-sass
- JS模块化工具requirejs教程02
基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出 ...
- mavne问题解决---Dynamic Web Module 2.3 or newer
一:前沿 maven问题的bug,其实是很烦人的,因为每次都是很纠结的去改这个bug,特别的烦人,这个bug也是使得我纠结了好久的,那个星期五自己搞了几个小时都没有解决下,之后星期一来百度Google ...
- 记另类Request method 'GET' not supported
一般遇到Request method 'GET' not supported这种问题,大家都会找相应controller下的具体方法,把get改为post之类.但是我这次是在访问静态资源,static ...
- [BZOJ1040] [ZJOI2008]骑士 解题报告
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...
- css的@符号的作用简单介绍
- 基于vlc sdk的二次开发--环境搭建、编译
前言 关于 搭建.编译VLC,不同的平台有不同的方法,可以参考wiki. 其中在windows下编译VLC有两种方式,MSYS+MinGW和CygWin.通过测试,最后决定采用MSYS+MinGW搭建 ...
- Maven介绍---POM、Dependency Management、Coordinates
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. POM(Project Object Model,对象模型): 仅仅只是一个xml配置文 ...
- springcloud+eureka简单入门案例
springcloud+eureka简单入门案例 一.服务提供者 直接提供服务,入门案例没有特别要设置的地方,注意下端口,由于要启动多个服务,可能会冲突 配置文件(src/main/resources ...
- golang命令行参数解析
package main import ( "fmt" "os" ) func main(){ s:= os.Args fmt.Println(s) } 直接执 ...