zoukankan      html  css  js  c++  java
  • MVC Razor标签

    1. RenderBody
    在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里有这样一条语句:
    @RenderBody()
    其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
    这个方法不需要参数,而且只能出现一次。
    2. RenderPage
    从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
    @RenderPage(“~/Views/Shared/_Header.cshtml”)
    带参数
    @RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")
    调用页面获取参数:
    //获取 RenderPage() 传递过来的参数
    @PageData["param"]
    3. RenderSection
    布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:
    @RenderPage(“~/Views/Shared/_Header.cshtml”)
    @RenderBody()
    //模板里添加了一个节
    @RenderSection(“head”)
    当然还要在视图中定义节,否则会出现异常:
    @section head{
    //do
    }
    为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:
    @RenderSection("SubMenu", false)

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

    4.@Html.Partial
     Partial 每次都会创建自己的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 writer输出的内容发送到一个 MvcString对象中
    更多时候我们会使用 @{ Html.RenderPartial("Details"); } 而不是@Html.Partial

    RenderPage()和RenderPartial()的区别

    RenderPage()调用的页面只能使用其传递过去的数据。
    而RenderPartial()是可以使用viewdata,model等数据的。

    Html.RenderPartial和Html.RenderAction的区别

    Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的 UserControl也适合使用。 Html.RenderAction则会先去呼叫Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现 (透过Action来读取资料库),此时会比较适合使用此方式。

    Html.ActionLink

    linkText:生成的链接所显示的文字         类型:string
    actionName:对应控制器的方法          类型:string
    routeValues:向对应的action传递的参数     类型:object或 RouteValueDictionary
    controlName:指定控制器的名称          类型:string
    htmlAttributes:设置<a>标签的属性                   类型:object或 IDictionary
    protocol:指定访问协议如:http等        类型:string
    hostName:指定访问域名            类型:string
    fragment:指定访问锚点             类型:string

    一 Html.ActionLink("linkText","actionName")
    该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法,
    默认控制器为当前页面的控制器,如果当前页面的控制器为Products,则 Html.ActionLink("detail","Detail")
    则会生成 <a href="/Products/Detail">all</a>


    二 Html.ActionLink("linkText","actionName","controlName")
    该重载比第一个重载多了一个参数,他指定了控制器的名称,
    如Html.ActionLink("detail","Detail","Products")则会生成
    <a href="Products/Detail">all</a>

    三 Html.ActionLik("linkText","actionName",routeValues)
    routeValue可以向action传递参数,如Html.ActionLink("detail","Detail",new { id=1})
    会生成 <a href="Products/Detail/1">detail</a>,
    此处假设当前的控制器是Products.

    四 Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)
    htmlAttribute可以设置<a>标签的属性,
    如 Html.ActionLink("detail","Detail",new{id=1},new{ target="_blank"})
    会生成 <a href="Products/Detail/1" target="_blank">detail</a>,
    需要主要的是如果写成 new{ target="_blank",class="className"}则会报错,
    因为class是关键字,此处应该写成 @class="className"。

    五 Html.ActionLink("linkText","actionName","controlName",routeValues,htmlAttributes)
    该重载包含了上面提到的所有参数类型

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/wangcq/p/3559034.html
Copyright © 2011-2022 走看看