• 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");

            

  • 相关阅读:
    官方示例之地球模块十:拔高GeoPolygon
    全景虚拟漫游技术实现(three.js vs ThingJS) Javascript 3D开发 前端 物联网 webgl 三维建模 3D模型 虚拟 全景
    一个3D城市地图应用工具,等你获取 3D 全景 可视化
    H5动画优化之路
    CSS3实现气泡效果
    清除浮动方法总结
    静态页面参数传递&回调函数写法&快速排序的实现方法
    使用SeaJS实现模块化JavaScript开发(新)
    《无懈可击的Web设计》_灵活的文字
    深入探究JavaScript中的比较问题
  • 原文地址:https://www.cnblogs.com/ingstyle/p/4324390.html
Copyright © 2020-2023  润新知