一,
1.@using :引入命名空间
2.@model:声明强类型的数据 Model 类型
3.@section:定义要实现母版页的节信息
4.@RenderBody():当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
在模板页的占位符,用来渲染那些没有特地命名的段落。
5.@RenderPage:呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
@RenderPage("~/Views/Shared/_Header.cshtml")
6.@RenderSection:布局页面还有节(Section)的概念,便于局部呈现
二,
1.行内(inline)C#(服务器端代码)形式(行内代码)@变量
例如:@User.Name,变量或属性结束后,任何形式文本或者标签都自动被解析为html,如遇结束判断有歧义,请加括号如下
@( 表达式)
例如:@(i + 1) 或 @(User.Name) 括号里面为:表达式,或者变量
@方法调用
例如:@Html.TextBox("UserName").ToString()
2. 代码块 ( 注: 代码块里面的代码要严格按照c#语法来,每行结束必需有分号)
第一种情况:
@{ 代码块}
@if (条件) { 代码块}
@switch (条件) { 分支匹配代码块}
@for (循环控制) { 代码块}
@while (循环控制) { 代码块}
@do { 代码块} while (循环控制)
第二种情况:(代码块中的文本或者Html客户端标签
(1)单行文本@:行内文本
换行的话自动变成了C#服务器端代码。
(2)多行文本
任何标签对 ,例如:<div>多行文字</div>
任何自闭合标签,例如:<img 多行属性 />
纯文字使用伪标签<text> ,例如:<text>
多行文字,两侧标签不会被输出</text>
3.其他
电子邮箱可以自动识别,例如:123456@qq.com
被误认为是电子邮箱的请加括号(),例如:123456(@UserName)
要输出商标版权等的,请用@字符转义,例如:@@ →会输出单个字符@
三,HtmlHelper和AjaxHelper
1.Html.BeginForm的两种写法:
(1)使用using语句
@using(Html.BeginForm()) {
}
(2)使用代码块闭合的形式 (注意form是代码块形式的不是行内代码:所以结尾必需有分号)
@{Html.BeginForm();}
@{Html.EndForm();}
2.Ajax.BeginForm()的写法
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId="",OnSuccess=""})
)
{
}
注:这里要想Ajax的Form有效的话我们必须在view页面引入支持Ajax的Js脚本
@Scripts.Render("~/bundles/jqueryval")
四,对于Razor智能感知的一点补充
当我们自定义一个类,让后想让这个类在Razor引擎有只能感知能力的时候。我们可以找到Views/Web.config文件,把我们的类所在的命名空间添加进去就可以了。