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

            

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/ingstyle/p/4324390.html
Copyright © 2011-2022 走看看