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. mysql————表类型(存储引擎)的选择

    表类型(存储引擎)的选择 7.1 mysql存储引擎概述 插件式存储引擎是mysql数据库最重要的特性之一,用户可以根据应用的需要选择ruhr存储和索引数据,是否使用事务等. InnoDB和BDB提供 ...

  2. 二进制转16进制JAVA代码

    public class Binary2Hex { public static void main(String[] args) { String bString ="10101000&qu ...

  3. centos网络配置之桥接模式

    一:前沿 来这家公司好久了,都没有开始写博客,都是积累着,都没有去写,今天实在是天激动了,我的虚拟机在配置好了之后折腾了一天都没有折腾出来可以上网,今天来了继续折腾,然后我该ip,改连接方式,我擦,终 ...

  4. [POI2014] KUR-Couriers(洛谷P3567)

    洛谷题目链接:[POI2014]KUR-Couriers 题目描述 Byteasar works for the BAJ company, which sells computer games. Th ...

  5. 最短路算法详解(Dijkstra,Floyd)

    最短路径 在一个无权的图中,若从一个顶点到另一个顶点存在着一条路径,则称该路径长度为该路径上所经过的边的数目,它等于该路径上的顶点数减1.由于从一个顶点到另一个顶点可能存在着多条路径,每条路径上所经过 ...

  6. LCD实验学习笔记(三):WATCH DOG

    看门狗是为了能够防止程序跑飞用的.程序应该定时的去喂狗.如果程序跑飞了,那么就不会去喂狗了.如果超过了喂狗的时间,那么狗就会生成一个信号来reset CPU.一般程序不需要,特殊情况下需要这种机制. ...

  7. UVALIVE 3562 Remember the A La Mode!

    费用流 建图很简单直接上代码 #include <map> #include <set> #include <list> #include <cmath> ...

  8. Js使用WScript.Shell对象执行.bat文件和cmd命令

    Js使用WScript.Shell对象执行.bat文件和cmd命令 http://www.jb51.net/article/58669.htm WScript.Shell(Windows Script ...

  9. k8s的Health Check(健康检查)

    强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...

  10. hdu 1364(差分约束)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12056   Accepted: 4397 Description ...