Asp.net MVC 3 Razor视图引擎的使用(一)

    刚接触mvc3的人对于Razor的语法必然有些陌生,以至于在开发时,遇到一些小小的阻碍,在此,我整理了一些常用的Razor语法,便于查阅。

    『视图展示数据的一些语法』

    1. 遍历ViewData中的数据,生成数据表格:

                @if (ViewData["PageData"] != null)
                {
                    List<OrgScoreWorkEn> list = ViewData["PageData"] as List<OrgScoreWorkEn>;
                    if (list != null && list.Count > 0)
                    {
                        foreach (OrgScoreWorkEn oen in list)
                        {
                    <tr class="toptd" οnmοuseοver="this.className='topovertd';" οnmοuseοut="this.className='toptd';">
                        <td>
                            <ul>
                                <li>@oen.fOrgName</li>
                                <li>@oen.fWorkTaskCode</li>
                            </ul>
                        </td>
                        <td>
                            <ul>
                                <li>@oen.fBeginDate.ToString("yyyy-MM-dd")至@(oen.fEndDate.ToString("yyyy-MM-dd"))</li>
                                <li><a href="#" οnclick="window.location.href='#';">
                                    @oen.fScoreTaskHTML
                                    </a>
                                </li>
                            </ul>
                        </td>
                        <td>
                            @oen.fModifyDate.Value.ToString("yyyy-MM-dd")
                        </td>
                        <td>
                            <ul>
                                <li>
                                    <img οnclick="window.location.href='@Url.Action("ScoreWorkEdit", "ScoreWork")?fWorkId=@oen.fWorkId';" src="@Url.Content("~/Content/images/editic.gif")" alt="编辑机构任务" style="cursor:pointer;" />
                                    <img οnclick="if(confirm('确定删除机构任务?')){ DeleteOrgWork('@Url.Action("ScoreWorkDelete", "ScoreWork")', '@oen.fWorkId');}" src="@Url.Content("~/Content/images/icon_delete.png")" alt="删除机构任务" style="cursor:pointer;" />
                                </li>
                                <li>
                                    <img οnclick="window.location.href='#';" src="@Url.Content("~/Content/images/icon_zoom.png")" alt="查看" style="cursor:pointer;" />
                                    <img οnclick="window.location.href='#';" src="@Url.Content("~/Content/images/icon_child.png")" alt="新增下级任务" style="cursor:pointer;" />
                                </li>
                            </ul>
                        </td>
                    </tr>
                        }
                    }
                }
    从上面的例子中,可以看出Razor视图的优点,换作在mvc2或者webform中,我们必然少不少使用<%%>括住c#代码的块,而html标签必然放在<%%>块之外,但是使用Razor的语法,我们可以清晰看出程序块的层次关系。

    另外@Url.Content是个非常体贴的方法,相信很多人在使用相对路径时,遇到过"../../"这种烦恼,而Url.Content则可以避免这个问题,只需指定文件的绝对路径,它便可为其生成相对路径,另外,它的作用可不仅仅限于指定文件的相对路径,它还可以这样用:

    @Html.Hidden("url", @Url.Content("~/View/Content/images/"))

    你可以将一个文件夹的相对路径存在隐藏域中,这样,便可以解决在单独的js文件中,无法使用Razor语法的情况

    另外一个需要注意的地方:“@oen.fBeginDate.ToString("yyyy-MM-dd")至@(oen.fEndDate.ToString("yyyy-MM-dd"))”,@()相当于<%= %>或<%: %>的作用:如果不加“()”,“@变量名”中的@符号紧跟在汉字或者其他字符后面,而没有跟在html标签后,它会被识别为普通的@字符,而不算Razor的语法块,除非你使用回车另取一行,让@变量名前没有其他字符,这种情况,使用@(变量名或表达式)可以解决问题。

    2. 其他语法

    @* *,注释的语法

    @using,引用包语法,相当于<%@ Import Namespace="***" %>,例如:@using System.Data;

    @{ },c#代码块标记,相当于<% %>

    @Model,指定视图的模型,相当于mvc2中,“<%@ Page Title="服务报名结束确认|托业" MasterPageFile="~/Views/Shared/OLMasterPage.Master" Language="C#"
    Inherits="System.Web.Mvc.ViewPage<dynamic>" %>”红色字体的定义。

    @selection,指定一个节的定义,例如:@selection header{ <script src="@Url.Content("~/Content/js/ScoreWork.js")" type="text/javascript"></script> }

        @selection content{

            @*body的内容*

         } 

    @@,转义,连续两个@,表示普通字符“@”

    方法调用跟mvc2没有太大的区别:@Html.Partial("***")与<%: Html.Partial("****") %>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值