Razor语法
Posted petewell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Razor语法相关的知识,希望对你有一定的参考价值。
摘要:Razor语法 (待续)
1. 输出单一变量时
@DateTime.Now
2. ?需要逻辑判断时,请用刮号包起来
启用状态: @(ViewBag.IsEnabled ? "启用" : "停用")
3. 多行程序
@
var name = "Chris";
@:您好,我是@name
请注意这边每行完要;
Razor的注解符号 @* // code *@
再多行注解中还可以使用变量
4. 程序区段中想要放入一段html码,可用
@
var bool = true;
if(bool)
成功!!
5. 属性误判 最好是变量都用括号刮起来
错误
您好,@ViewBag.Name先生
没有Name先生属性
正确
您好,@(ViewBag).Name先生
6. Email的小老鼠不用特别处理 只要@前后有文字Razor会自行忽略
7. 输出未经HtmlEncode的字符串
mvc对于变量都是默认经过编码,因此若要显示一些tag才要解码
@
ViewBag.Description = "文字描述 "
@Html.Raw(ViewBag.Description)
8. MasterPage
默认载入路径在 /Views/_ViewStart.cshtml (全站默认)
_ViewStart.cshtml内容为载入的主板页面入境
若是想要在 Views/Home/Index/ 的目录下载入个别的MasterPage
请在?/Views/Home/ 摆入新的_ViewStart.cshtml 即可设定成新的MasterPage
(MasterPage)有两个特殊挖洞语法
@RenderBody() : View在没有特别声明的情况下都会被填到这边
@RenderSection( name , required : false)
具名坑洞 - MasterPage与View都需要声明,
第一个参数为具名参数名称
第二个参数为是否为必填,若声明为TRUE 所有载入此Layout的VIEW都需要填入内容否则会出错
View要如何对应到具名坑洞呢?
@Section 具名坑洞Name
// CODE
PS: Razor执行顺序为先View在Layout所以将数据传到layout页面可以使用Viewbag与ViewData
? ? ? 但是无法从Layout传数据回view
9. @Helper辅助方法
//原来View
@foreach( var item in Model)
@if(item.score > 60)
@:及格
else
@:不及格
//不希望这种逻辑一直存在很多地方可以写@helper方法帮忙
新view
@foreach( var item in Model)
@ShowIsPass(item.score)
@helper ShowIsPass(int score)
@if(score > 60)
@:及格
else
@:不及格
若是这个Helper方法很多View想要使用
请在将@Helper方法独立出来放在App_Code目录下
加入新项目 -> MVC部分页面(Razor)
此文件副文件名为cshtml,文件名默认为类名称(习惯取代配置)
@heleper ?一定要小写
View的用法
@文件名.方法名称()
10.function自订函数
@functions
public string GetSomeString()
var name = "clris";
return name;
//View调用用法
@GetSomeString()
若是多个View共用跟@helper一样请放到App_Code里面
但是请把方法变成Static不然无法使用
放到App_code的里面,view用法一样
@文件名.方法名称()
11. @using 引用命名空间
@using MvcApplication6.Models
若是每个页面都需要引入的空间可以用 /Views/web.config中设定 (不是网站根目录)
里面搜寻namespace在这里面设定
以上是关于Razor语法的主要内容,如果未能解决你的问题,请参考以下文章