打开mvc项目时,打开Login.cshtml文件就会发现各种@的用法
首先需要说一下技术演变历史,对理解这个很有帮助
一、ASP.NET
asp.net需要在.aspx页面加入c#或者vb代码
1、<%=%> 是输出,里面放的变量名,如:
<div> < h1>Hello World</h1> < p>Welcome to ASP.NET on <%= DateTime.Now.ToString() %></p> < /div>
输出结果为:
HelloWorld
Welcome to ASP.NET on 20011-11-10 14:25:40
(这个例子很典型)
2、 <%#%> 是赋值,它是数据的绑定的语法,必须要调用改控件的DataBind()方法才可以执行。
如:<%# DataBinder.(Container.DataItem,"ClassName") %>
完整代码:<asp:DataList ID="ClassList" runat="server"> < ItemTemplate> <%# DataBinder.(Container.DataItem,"ClassName") %> < /ItemTemplate> < /asp:DataList></td>
3、<%@ %> 表示:引用
如在很多.aspx页面中,都可以看到如下的代码:
<%@ PageLanguage="C#" CodeFile="Default.aspx.cs"Inherits="_Default" %>
4、<%%>中间一般放函数或者方法,典型的asp程序写法。
例如:<trbgcolor="#ffffff"> < td height="20"> < div align="center">类别:</div> < /td> < td height="9"> < %ST_getList();%> < /td> < /tr>
二、从ASP.NET MVC 3开始加入了Razor引擎"@"
Razor是为了将所需的字符和击键数减少到最小,Razor在内部帮我们做了闭合“%>”
从
<% for(int i=0; i<3; i++) { %>
<p>现在是<%= i %></p>
<% } %>到
@{
for
(
int
i=0; i<3; i++)
{
<p>现在是 @i</p>
}
的变化}
三、Razor视图引擎加入后,扩展出的@helper功带来强大的功能。
1、模板页
1.1@ViewBag.Title
ViewBag.Title 就是 显示网页的title ,可以在layout里面 定义一个 @ViewBag.Title - XXX网站
1.2@Styles.Render("~/Content/css")
对应App_Start/BundleConfig下添加的CSS引用组
1.3@Scripts.Render("~/Content/js")
对应App_Start/BundleConfig下添加的js引用组
1.4@Html.ActionLink()
输入
@Html.ActionLink("这是一个连接", "Index", "Home")
输出
<a href="/">这是一个连接</a>
1.5@Html.Partial("视图")
可以将视图放在同级目录下,或者放在Shared目录下,除此之外的就不行了。
Partial 回传的一个Object (MvcHtmlString), 回传一个String把一堆Html给回传出来, 然后写进到主页面上
1.6@RenderBody()
母版页的概念,可以认为这里放置引用模板页的内容
1.7@DateTime.Now.Year
在html代码中输出年份
2、Login.cshtml
@{}表示一个代码块
2.3@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { name = "nbform", id = "nbform" }))
指定表单提交方式和路径等
2.4@Html.CheckBoxFor()
设置复选框input元素