zoukankan      html  css  js  c++  java
  • 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文件夹中
    控制器可以从当前项目中分离出来,放到其它的项目中,本质就是将类定义到其它的项目中

  • 相关阅读:
    linux下文件结束符
    【转】跟我学Kafka之NIO通信机制
    【转】 详解Kafka生产者Producer配置
    【转】项目延期的⑦大因素
    (转)EOSIO开发(三)钱包、账户与账户权限之概念篇
    CentOS里alias命令
    (转)EOSIO开发(一)使用Docker构建本地环境
    Marathon自动扩缩容(marathon-lb-autoscale)
    (转)Springboot日志配置(超详细,推荐)
    Spring Boot下的lombok安装以及使用简介
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/6044933.html
Copyright © 2011-2022 走看看