[ASP.NET MVC 5 高级编程] 第3章 视图

第3章 视图

概述

视图的作用   
    渲染HTML界面

控制器向视图传递数据  
    ViewBag.  
    模型,模型视图. @model ProjectName.Models.something  //完全限定
    通过在~/Views/web.config 文件中添加namespace来避免每次使用完全限定

视图约定
    目录/文件名称/选择
    return View();      //与控制器动作同名的视图
    return View("Else");//指定控制器下Else视图
    return View("~Views/Con1/Index.cshtml"); //指定完整路径   

强类型视图
    使用模型对象等可以获得智能感知/编译器检查等好处
    return View(someModel);  //传递模型对象

Razor语法

HTML编码
    Razor表达式用HTML自动编码,并不会显示HTML标记
    若要显示HTML标记可以使用视图辅助类(@HTML,IHtmlString接口的实例)
    若要显示不经过HTML编码的文本,使用HtmlString的实例或者Html.Raw(sometext);

    在JavaScript中使用用户提供的Razor变量值时,要使用JavaScript字符串编码而不仅仅是HTML编码,要使用@Ajax.JavaScriptStringEncode()方法对用户输入进行编码.这样可避免XSS攻击.如:
    <script>
        $(function(){
            var message = 'Hello @Ajax.JavaScriptStringEncode(ViewBag.Name)';   
            $("#message").html(message).show('slow');
        });
    </script>
    
代码块
    @{ something big }

隐式/显示表达式
    <span>@model.Name</span>    <span> 1 + 2 = @(1+2) </span>

文本和标记结合
    <span>Item @item.Name</span>        

代码块/标记结合
    @if(show){<text>Show Text</text>} 

组合方式
    代码块,文本,标记,显示表达式,隐式表达式,视图辅助类

转义与注释
    @@显示"@",  @* something *@ 注释

调用泛型方法
    由于泛型方法中使用了尖括号,需要使用显示表达式

RenderBody

语法:
    @RenderBody()  //视图在布局中的位置

RenderSection

语法:
    @section Footer { something }                   //在布局中定义
    @RenderSection("Footer",required:false)         //在视图中使用
    @if(IsSectionDefined("Footer"){ ... }           //判断节是否有定义

说明:
    默认使用节时,required不需要写,所有需要每个视图都要提供节定义.

ViewStart

说明:
    _ViewStart.cshtml   //指定默认布局,视图中不指定时使用此设置
    @{ Layout="~/Views/Shared/_Layout.cshtml"; }  //指定视图

PartialView

语法:
    C#:Return PartialView([ViewName]);

说明:
    部分视图不能指定布局
    可以结合Ajax使用,get时返回部分视图内容并加载到相应元素

转载于:https://www.cnblogs.com/djq0/p/5695467.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值