zoukankan      html  css  js  c++  java
  • Mvc4_ActionLink跟@RenderBody ,@RenderPage

      1. @Html.ActionLink("该链接要显示的文字A","对应的控制器方法B");会生成:<a href="C/B">A</a> 默认控制器为当前页面的控制器
    
      2.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B","指定了控制器名称C");会生成:<a href='C/B'>A</a>
    
      3.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B",new{id=1});会生成:<a href ='C/B/1'>A</a>
    
      4.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B",new{id=1},new {target='_blank'}); 会生成:<a href="C/B/1" target="_blank">A</a> 假如写成:new{target='_blank',class="className"}要报错 因为class是关键字,应该写成:@class="className"。
    
      5.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B","对应的控制器C","routeValues 传的 new{id=1}","htmlAttrib @class='className'");包含了所有的类型参数
    @html.ActionLink的几种参数格式:

     Razor模板引擎 @RenderBody ,@RenderPage

      1.@RenderBody()

        当创建基于Layout.cshtml布局页面的视图时候,视图的内容跟布局页面合并。而创建的新视图内容会通过Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间

      2.@RenderPage()

        这个方法是要呈现一个页面,比如网页中固定头部的可以单独放在一个共享的视图文件里,然后在布局页面通过这个方法调用:

        @RenderPage("~/Views/Shared/Err.cshtml");

        带参数:@RenderPage(~/Views/Shared/Err.cshtml",new{id=0,name="ing"});

        获取RenderPage()传递过来的参数:@PageData["param"]

      3.RenderSection()

        布局页面还有节Section的概念,如果某个视图模板中定义了一个节,那么久可以把它单独呈现出来,为了防止缺失节而出现异常,可以给RenderSection()提供俩个参数。

        @RenderSection("head",false);

          或

        @if(IsSectionDefined("head"))

          {

            @RenderSection("head",false);

          }else{

          <p>No</p>

          }

     <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />  
    
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    
    @RenderSection("head", required: true)@*View页面自定义特定js/css使用*@  
    
    <body>  
    
        @RenderPage("~/Views/Shared/_Header.cshtml")
         @RenderBody()  
    </body>  
    例子

        4.@Html.Partial

          每次创建自己的TextWriter实例并且把内容缓存在内存里面,最后把所有Writer输出的内容发送到一个MvcString中

          经常用@{Html.RenderPartial("A");}而不是@Html.Partial

       Html.RenderPartial()跟@Html.Partial的区别:

          Html.RenderPartial直接输出到当前HttpContext(因为是直接输出所以性能好)

          Html.Partial将视图内容直接生成一个字符串并返还(相当于有个转义的过程)

       RenderPage()和RenderPartial()的区别:

          RenderPage()调用的页面只能使用其传递过去的数据

          RenderPartial()是可以使用ViewData,Model等数据的

        如:@{Html.RenderPartial("A",model);}用这个重载可以在部分视图使用强类型,然后在主视图使用第二个参数传model过去 @{Html.RenderPartial("A"ViewData["B"]);}

      Html.RenderPartial和Html.RenderAction的区别:

        Html.RenderPartial适合用在重复的UserControl,并且只需要透过Model来呈现内容,或者对于广告的UserControl也合适用。

        Html.RenderAction则会先去呼叫Controller的Action方法,如果UserControl是需要透过资料库(Action)取得信息来呈现,此时就比较合适使用此方法

      注:

        1.带有Render的方法返回值都是void,在方法内部进行输出,不带返回值类型为MvcHtmlString 例:

          @Html.Partial对应@{Html.RenderPartial(xxx);}

          @Html.Action对应@{Html.RenderAction(xxx);}

        2.Html.Partial可以直接提供用户控件名作为参数,而Html.Action需要对应的Action,在Action内部返回PartailResult(即return PartialView()).

        3.对于简单没有任何逻辑的用户控件 推荐用Html.Partial;对于需要设置一些Model的用户控件,用Html.Action。当然 ,有Model数据也是可以用Html.Partial方法的,可以看方法的重载

        4.使用Html.Action有个好处:可以根据不通过的场景选择不通的用户控件:

          @Html.Action("AControl")

          在对应的A这个Action中,在用户没有登录的时候,可以用return PartialView("BControl");登录后,可以 return PartialView("AControl");

            

  • 相关阅读:
    Windows“神器”收集贴
    《SICP》读后感:关于软件本质的一点思考
    R语言apply函数族笔记
    论触摸板是比鼠标更先进的输入方式
    macbook上实现MacOS+Windows8+Ubuntu三系统
    使用Markdown+Pandoc+LaTex+Beamer制作幻灯片
    Python基本时间转换
    MySQL存储过程、触发器、自定义函数、事务
    Scrapy抓取jobbole数据
    win7安装scrapy
  • 原文地址:https://www.cnblogs.com/ingstyle/p/4324390.html
Copyright © 2011-2022 走看看