[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