• @Styles.Render(),@Scripts.Render,@Html.ActionLink(),@RenderBody(),@RenderSection() 用法说明


    一、首先新建一个MVC项目,打开_Layout.cshtml。见图

    这是微软自动生成的一个母版页,我们从母版页开始看

    1.@Styles.Render("~/Content/css")

    在页面上可以用@Styles.Render("~/Content/css") 来加载css

    首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件,开开这个文件看下

    我们会发现这里设置了两个css样式,设置好后可以理解为一种键值对的形式,引用的时候直接@Styles.Render("~/Content/css")取键就可以

    2.@Scripts.Render("~/bundles/modernizr")

    这个也和css设置是一样的,调用方式也是相同的。

    3.@Html.ActionLink 这个着重说一下,

       在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁。通过浏览器依然会解析成传统的a标签。除此之外,还允许我们添加Html属性。下面来看看@Html.ActionLink()的使用方法吧。

    (1)@Html.ActionLink("linkText", "actionName")

           这种重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法(Action),默认控制器为当前页面对应的控制器。例如,当前页面的控制器为ProductsController:@Html.ActionLink("detial", "Detial")会生成<a href="/Products/Detail">detail</a>   

      (2) @Html.ActionLink("linkText", "actionName","controllerName") 

      该重载比第一个重载多了一个参数,他指定了控制器的名称。

      例如,@Html.ActionLink("detail", "Detail", "Products")会生成<a href="Products/Detail">detail</a>

      (3) @Html.ActionLink("linkText", "actionName","controllerName",routeValues) 

           相对于上一种重载,该重载新增了routeValue参数,routeValue可以向action传递参数。

      例如,@Html.ActionLink("detail", "Detail", ,"Products",new{ id = 1 })会生成<a href="Products/Detail/1">detail</a>

      (4)@Html.ActionLink("linkText", "actionName", "controllerName", routeValues, htmlAttributes)

          这是最全的重载,可以设置标签和样式。

          例如,@Html.ActionLink("detail", "Detail", "Products",new{ id = 1 }, new{ target = "_blank" })会生成<a href="Products/Detail/1" target="_blank">detail</a>,需要注意的是如果写成new{ target="_blank", class="className" }则会报错,因为Class是C#的关键字,此时应该写成@class="className"。

     4.@RenderBody()标签

        这个标签就是一个占位符,当一个视图使用了布局页的时候,该视图就会被加载到占位符的位置

    5.@RenderSection("scripts", required: false)

    布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来

    第一个参数是设置一个节,也可以说相当于一个占位符的作用

    如图设置一个名为hahah的节,我们去在子页面用一下

    看使用效果。但是当我们在母版页设置了这个节点,子页面不实现的话,就会报错,删掉@section hahha再运行

    这是因为我在_Layout.cshtml中使用的是@RenderSection("hahah")他要求所有子页都要实现,

    可以使用它的另外一个重载@RenderSection("hahah",false),第二个参数代表它不是必须的,就不会抛出异常。 还有,当我在母版页中定义了@RenderSection("SubMenu",false)的时候,我希望当所有子页都没有实现这个Section的时候,母版页可以有自己的呈现内容,就可以用

  • 相关阅读:
    Linux内核分析
    socket的protocal参数
    linux修改系统时间
    asdfadsf
    NoSQL数据库笔谈
    scrapy安装
    数字证书及CA的扫盲介绍
    Java数据类型
    EXISTS的用法
    python链接
  • 原文地址:https://www.cnblogs.com/wangcongsuibi/p/10554411.html
Copyright © 2020-2023  润新知