mvc 4 Razor (@html.xx)语法大全以及应用

Razor语法大全

 

 @Htmlhtml

ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction差异


对这四个的差异作一个总结,清理一下思路,便利从此应用:

@Html.Action

一、Html.ActionLink("linkText","actionName")git

第一个参数:要显示的文本,第二个参数:视图名
例如:<%=Html.ActionLink("跳转到About页面", "About");%> → <a href="/Home/About">跳转到About页面</a>

二、Html.ActionLink("linkText","actionName","controlName")
第一个参数:要显示的文本,第二个参数:视图名, 第三个参数:控制器名
例如:<%= Html.ActionLink("跳转到别的controler中", "Index", "Home");%> →<a href="/
Home/Index
">跳转到别的controler中</a>

三、
Html.ActionLink("linkText","actionName",routeValues)
第一个参数:要显示的文本,第二个参数:视图名, 第三个参数:url中的参数
例 如:<%=Html.ActionLink("跳转到About页面", "About", new { id = "1", name = "x" }) %> → <a href="/Home/About/1?name=x">跳转到About页面</a>

四、
Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)
第一个参数:要显示的文本,第二个参数:视图名, 第三个参数:url中的参数,第四个参数:设置标签属性
例 如:<%=Html.ActionLink("跳转到About页面", "About", new { id = "1", name = "x" }, new { disabled = "disabled",@class = "about"})%>  → <a class="about" disabled="disabled" href="/Home/About/1?name=x">跳转到About页面</a>

注意:设置标签的class属性时,应在class前加上@,由于class是关键字。

上文中的<%= %> 均可以换成
<%: %> 

“<%:%>” 和 “<%=%>” 的区别:
<%: %>对其中内容进行htmlEncode编码了,能够防止跨站脚本攻击(即: XSS攻击)。

<%:<div>显示div<div> %> → 
<div>显示div<div>  而 
<%= <div>显示div<div> %> → 
显示div

<%: %>中用函数时,该函数必定要有返回值,不然,会报错。

 

http://www.mamicode.com/info-detail-1244382.html github

 

 

使用方法:@Html.Action(action, controller)
加载局部页面。
例如在模板页中使用:@Html.Action("Contact", "Company")
在CompanyController中有以下方法:
public PartialViewResult Contact()web

{
   return PartialView();
}服务器

 

一、带有Render的办法返回值是void,在办法内部进行输出;不带的返回值类型为MvcHtmlString,因此只能如许应用:
    @Html.Partial 对应 @{Html.RenderPartial(....);}
    @Html.Action 对应 @{Html.RenderAction(....);}框架


二、Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,而后把产生的页面带回到原本的View中再回传。而Partial、RenderPartial直接加载视图文件内容函数


3.  Html.Partial能够直接供给用户控件名做为参数,而Html.Action需要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。工具


四、对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于需要设置一些Model的用户控件,推荐应用Html.Action。固然,有Model数据也是能够应用Html.Partial办法的,能够看办法的重载。布局


五、应用Html.Action有个益处,就是能够按照不合的场景选择不合的用户控件。好比:
@Html.Action("UserInfoControl")
在对应的UserInfoControl这个Action中,在用户未登陆的时辰,能够retun PartialView("LogOnUserControl");登陆后,能够retun PartialView("UserInfoControl");post

    

 

 

 

 

更多:关注:http://blog.csdn.net/hcf_force/article/category/1872009

 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

Razor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/

Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法,以后用Razor作一个代码生成器,就使用Razor的语法来。

Razor的发布是和MVC一块儿的,做为MVC的视图模板引擎。

 

Razor文件类型

   Razor能够在vb.net和C#中使用。分别对应了两种文件类型,.vbhtml和.cshtml 

 

Razor的标识符

    @字符被定义为Razor服务器代码块的标识符,后面的表示是服务器代码了。web form中使用<%%>中写服务器代码一个道理。在vs工具里面提供了代码着色和智能感应的功能。以下面代码:

@{string userName= "邓星林";} <span>@userName</span> <span>@DateTime.Now.ToString("yyyy-MM-hh")</span>

 

Razor的做用域

     在上面一个例子中都已经使用到了大括号{},不错,大括号里面的就是表示做用域的范围,用形如@{code}来写一段代码块。

@{
    string userName= "邓星林"; @userName }

在做用域(代码块)中输出也是用@符号的。

 

用Razor和html代码混合编写

   在Razor中写html代码和html代码中写Razor语句都是能够的,而且还有智能提示。

   a.在做用域内若是是以html标签开始则视为文本输出

   b.若是要输出@,则使用@@

   c.若是要输出非html标签和非Razor语句的代码,则用@:,他的做用是至关于在处于html下面编写同样了,如在@:后面能够加上@就是表示Razor语句的变量

 如:

复制代码
@{

    var str = "abc"; ////下面会输出:this is a mail:dxl0321@qq.com, this is var: abc,this is mail@str,this is @; @: this is a mail:dxl0321@qq.com, this is var: @str,this is mail@str,this is @@; //下面输出abc  @str }
复制代码

Razor做用块注释

    razor做用块里面自己就是服务器代码了,所以可以使用服务器代码的注释,注释有//和/**/分别是单行注释和多行注释。

   另外razor注释还可使用自身特有的@* 注释的内容 *@,支持单行和多行的。

复制代码
@{
   @* 多行注释 多行注释 *@ var i = 10; @* asdfasf *@ }
复制代码

Razor类型转换

         As系列扩展方法和Is系列扩展方法

          AsInt(), IsInt()

      AsBool(),IsBool()

      AsFloat(),IsFloat()

     AsDecimal(),IsDecimal()

      AsDateTime(),IsDateTime()

    ToString()

@{
    var i = “10”; } <p> i = @i.AsInt() </p> <!-- 输出 i = 10 --> 

 

razor其它

  @Href("~/")//表示网站的根目录

  @Html.Raw(Module.Content)  输出HTML,如:@Html.Raw('<font color='red'>红字</font>'),就会显示出红色的”红字“,不用的话会直接显示这段html字符串(<font color='red'>红色文字</font>)

 

 

 

在实际中,好比一个网站,整过框架是同样的,而有的地方是不少相同的版块。所以咱们须要复用。

 

布局(Layout)

   layout方式布局就是至关于一个模板同样的,咱们在它地址地方去添加代码。至关于定义好了框架,做为一个母版页的,在它下面的页面须要修改不一样代码的地方使用@RenderBody()方法

复制代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>个人网站 - @Page.Title</title> </head> <body> @RenderBody() </body> </html>
复制代码
@{
    Layout = "/LayoutPage.cshtml";
    Page.Title = "测试页面哦";
}

<p>This is a layout test</p>

 

页面(Page)

 page是当须要在一个页面中,输出另一个razor文件的内容时候用到,好比头部或者尾部这些公共的内容时候须要用到。输出就使用 @RenderPage()方法

如:A页面中也要把B页面的内容输出

A页面:

<p> @RenderPage("/b.cshtml") </p>

b页面的代码以下:

<font color="red">这是一个子页面</font>

 

Section区域

    Section是定义在Layou的中使用的。在Layout的页面中用。在要Layout的父页面中使用@RenderSection("Section名称 ")

定义:

复制代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>个人网站 - @Page.Title</title> </head> <body>  @RenderSection("SubMenu") @RenderBody() </body> </html>
复制代码

在它的子页面中使用

@section SubMenu{
    Hello This is a section implement in About View.
 }

 若是在子页面中没有去实现了SubMenu了,则会抛出异常。咱们能够它的重载@RenderSection("SubMenu", false)

复制代码
 @if (IsSectionDefined("SubMenu"))
        {
            @RenderSection("SubMenu", false)
        }
        else
        {
            <p>SubMenu Section is not defined!</p> }
复制代码

 

 Helper

   helper就是能够定义可重复使用的帮助器方法,不只能够在同一个页面不一样地方使用,还能够在不一样的页面使用。

如在cshtml中那么写:

复制代码
@helper sum(int a,int b)
{  
 var result=a+b;
  @result } <div > <p>@@helper的语法</p> <p>2+3=@sum(2,3)</p>
<p>5+9=@sum(5,9)</p>
</div>
复制代码

咱们一般会把一类Helper放在一个单独的cshtml文件中,而文件名就至关于一个类名。

我把sum放在HelpMath.cshtml文件中,则咱们在那上面cshtml中的使用方法是:

<p>2+3=@HelpMath.sum(2,3)</p> <p>5+9=@HelpMath.sum(5,9)</p>

另外,系统还为咱们提供了一些列的Helper,用来简化Html的书写。这些Helper放在@Html中,咱们能够方便的使用:

<p> @Html.TextBox("txtName") </p>

 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

 

做者:划风
邮箱:emaisi@hotmail.com
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利.
相关文章
相关标签/搜索