View数据呈现相关技术
一、了解Razor语法
1、Razor基本语法
a)输出单一变量时不需要加分号做结尾。如:
<p>现在时刻:@DateTime.Now</p>
b)输出一段含有空白字元或运算子的结果时,必须在前后加上一个小括弧。如:
<p>会员名称:@(@User.Identity.Name + Model.MemberLevel) 启用状态:@(@ViewBag.IsEnabled?"启用":“停用”)</p>
c)在页面中执行多行C#代码时,必须在前后加上一个大括弧。如:
@{
var name = "Will";
var message = "你好,我是" + name;
}
d)在页面多行C#代码的Razor语法中插入HTML或其他文字内容,必须在每一行最前面加上一个“@:”符号,而且加上“@:”符号的这行代码里,也可以再加上其他Razor变量。
@{
var name = "Will";
@:你好,我是@name
}
e)如果要在检视页面中输出“@”符号,可以用两个“@”符号。如:@@Will_Huang 此语法最后会输出:@Will_Huang
2、Razor与HTML混合输出
a)在页面中撰写if判断句,如:
@if(ViewBag.IsEnaled){
@:启用
} else {
@:停用
}
如果ViewBag参数并不存在,其回传的结果将为null,但是if判断句中必须回传Boolean类型,因此会引发“无法将null转换成‘bool’”异常,因此以上代码可改为:
@if(ViewBag.IsEnabled != null && ViewBag.IsEnabled)
{
@:启用
} else {
@:停用
}
b)如果要在代码区块输出大量文字,只要在代码区块里的前后加上一组HTML标签即可,Razor会智能地判断出这是一段HTML标签文字,如此一来,如果在大范围的代码区段中就不用在每一行前面加上"@:"符号了。如:
@if(ViewBag.IsEnabled)
{
<span>启用</span>
}
else
{
<span>停用</span>
}
如果在上述区段中不想输出如何前后的标签该怎么办呢?在Razor页面里,可以使用特殊的<text>标签来代替这个HTML标签,最后输出到浏览器时不会输出<text>这个标签。如:
@if(ViewBag.IsEnabled){
<text>
显示启用的HTML段落
<p>
@ViewBag.EnabledMessage
</p>
</text>
} else {
<text>
显示停用的HTML段落
<p>
@ViewBag.DisabledMessage
</p>
</text>
}
也可以在多行C#代码段落里使用相同的语法,利用"@:"或<text>作为HTML与Razor语法之间的切换,如
@{
var is_valid = true;
if(!is_valid){
<text>无权限!</text>
}
}
3、Razor与HTML混合输出的技巧
a)属性名称误判
如果想要在Will部分改写成Razor语法输出一个变量:您好,Will先生。如果写成"您好,@ViewBag.Name先生",Razor语法把"@ViewBag.Name先生"当成了一个C#语法,把"Name先生"当成ViewBag的属性了,因此输出了"您好,"。解决方法:在Razor语法前后加上小括弧就可以明确区分Razor与HTML内容,
上述可改为:“您好,@(ViewBag.Name)先生”。另外两种解决方法:“您好,<span>@ViewBag.Name</span>先生” 或者"您好,@ViewBag.Name<span>先生</span>"。
b)未预期的额外属性
View数据呈现相关技术的更多相关文章
- 大数据项目相关技术栈(Hadoop周边技术)
J2EE 框架Spring 开发框架 + SSH or SSM Lucene 索引和查询IKAnalyzer 分词Webmagic 爬虫 ETL工具:KettleSqoop 结构化数据库-hadoop ...
- MVC中Controller控制器相关技术
第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...
- 白话学习MVC(十)View的呈现二
本节将接着<白话学习MVC(九)View的呈现一>来继续对ViewResult的详细执行过程进行分析! 9.ViewResult ViewResult将视图页的内容响应给客户端! 由于Vi ...
- 白话学习MVC(九)View的呈现一
一.概述 本节来看一下ASP.NET MVC[View的呈现]的内容,View的呈现是在Action执行之后进行,Action的执行生成一个ActionResult,[View的呈现]的功能就是:通过 ...
- JavaScript对SVG进行操作的相关技术
原文地址:http://www.ibm.com/developerworks/cn/xml/x-svgscript/ 本文主要介绍在 SVG 中通过编程实现动态操作 SVG 图像的知识. SVG ...
- Asp.net mvc 中View 的呈现(二)
[toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...
- Asp.Net MVC<八>:View的呈现
ActionResult 原则上任何类型的响应都可以利用当前的HttpResponse来完成.但是MVC中我们一般将针对请求的响应实现在一个ActionResult对象中. public abstra ...
- 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
一.开篇语 我的上篇文章<关于如何提供Web服务端并发效率的异步编程技术>又成为了博客园里“编辑推荐”的文章,这是对我写博客很大的鼓励,也许是被推荐的原因很多童鞋在这篇文章里发表了评论,有 ...
- 【原】http缓存与cdn相关技术
摘要:最近要做这个主题的组内分享,所以准备了一个星期,查了比较多的资料.准备的过程虽然很烦很耗时间,不过因为需要查很多的资料,因此整个过程下来,对这方面的知识影响更加深刻.来来来,接下来总结总结 一 ...
随机推荐
- token in c and cpp (C preprocessor)
C tokens are of six types, They are, keyword identifier constant string-literal punctuator preproces ...
- Linux一些防攻击策略
来自http://www.imooc.com/learn/344
- AC日记——营业额统计 codevs 1296 (splay版)
营业额统计 思路: 每次,插入一个点: 然后找前驱后继: 来,上代码: #include <cmath> #include <cstdio> #include <iost ...
- 巧用chrome开发者工具
说明:截图中的Chrome版本为52,不同版本可能略有区别. 常用设置 开发时消除静态资源缓存不能立刻更新的困扰,勾选Disable cache即可 切换颜色显示格式 修改默认颜色显示格式,在Sett ...
- Spark原理小总结
1.spark是什么? 快速,通用,可扩展的分布式计算引擎 2.弹性分布式数据集RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据 ...
- 给交换机端口设ip
先给端口设vlan,再给vlan设ip [H3C]vlan [H3C-vlan100]port GigabitEthernet // <H3C>sy System View: return ...
- ichartjs 制作的图表
ichartjs资源包下载:https://files.cnblogs.com/files/xiandedanteng/ichartjs-ichartjs1.2.zip 本例下载地址:https:// ...
- JAVA_Could not find property [struts.actionMapping]怎么办
你的项目中不包含log4j.jar这个文件,包含进去即可
- require.js 使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《C陷阱与缺陷》学习笔记(一)
前言和导读 "得心应手的工具在初学时的困难程度往往超过那些easy上手的工具."比較认同这句话. 我至今认为自己事实上还是个刚入了门的刚開始学习的人. 第一章 "词法&q ...