Mvc4_ActionLink跟@RenderBody ,@RenderPage

  1. @Html.ActionLink("该链接要显示的文字A","对应的控制器方法B");会生成:<a href="C/B">A</a> 默认控制器为当前页面的控制器

  2[email protected]("该链接要显示的文字A","对应的控制器方法B","指定了控制器名称C");会生成:<a href=‘C/B‘>A</a>

  3[email protected]("该链接要显示的文字A","对应的控制器方法B",new{id=1});会生成:<a href =‘C/B/1‘>A</a>

  4[email protected]("该链接要显示的文字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[email protected]("该链接要显示的文字A","对应的控制器方法B","对应的控制器C","routeValues 传的 new{id=1}","htmlAttrib @class=‘className‘");包含了所有的类型参数

@html.ActionLink的几种参数格式:

Razor模板引擎 @RenderBody ,@RenderPage

  [email protected]()

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

  [email protected]()

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

    @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>  

例子

    [email protected]

      每次创建自己的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");

        

时间: 2024-08-19 02:51:17

Mvc4_ActionLink跟@RenderBody ,@RenderPage的相关文章

mvc4

1. @Html.ActionLink("该链接要显示的文字A","对应的控制器方法B");会生成:<a href="C/B">A</a> 默认控制器为当前页面的控制器 2[email protected]("该链接要显示的文字A","对应的控制器方法B","指定了控制器名称C");会生成:<a href='C/B'>A</a> 3[ema

MVC - 知识点

1.     @Styles.Render("~/Content/css")  是怎么工作的? 在App_Start文件夹里面的BundleConfig.cs中定义了StyleBundle,这里Render的时候其实就是调用那里面对应的Bundle. 2. RenderBody() RenderPage() RenderSection() 的区别? http://www.codeproject.com/Articles/383145/RenderBody-RenderPage-and-

ASP.NET Web Pages (Razor) API Quick Reference

By Tom FitzMacken|February 10, 2014 Print This page contains a list with brief examples of the most commonly used objects, properties, and methods for programming ASP.NET Web Pages with Razor syntax. Descriptions marked with "(v2)" were introduc

MVC教程八:母版页(布局页)视图

一.母版页介绍和使用 母版页的扩展名为".cshtml",也叫做视图布局页,它相当于网页的模板.在其他网页中,只要引用了母版页,母版页的页面内容就可以自动显示出来,设计者可以修改引用的母版页中预留的部分,其他部分保持不变,这样就可以使多个页面的风格保持一致,给网页设计带来了很大的方便. 1.创建母版页视图的要点 (1).在Views的子文件夹Shared文件夹里面添加. (2).以"_"前缀作为开头. (3).以"Layout.cshtml"作为

MVC Razor母版

什么是Razor母版? Razor 不是一种编程语言.它是服务器端的标记语言. Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中. 基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容.当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码. 通过服务器的运行,代码能执行复杂的任务,比如进入数据库. Razor 是基于 ASP.NET 的,是为创建 Web 应用程序而设计的.它具有传统 ASP.NET 的

@RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别

1. RenderBody在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到标签里有这样一条语句: @RenderBody() 其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间. 这个方法不需要参数,而且只能出现一次.2. RenderPage从名称可以猜出来这个方法是要呈现一个

MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction

一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 @RenderBody 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过_Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间. @RenderPage从名称可以猜出来这个方法是要呈现一个页面.比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:@RenderPage("

MVC @RenderBody、@RenderSection、@RenderPage、@Html.RenderPartial、@Html.RenderAction

1.@RenderBody() 作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间.这个方法不需要参数,而且只能出现一次. 2.@RenderPage 从名称可以猜出来这个方法是要呈现一个页面.比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:@RenderPage("~/Views/Shared/_Header.cshtml&qu

Razor引擎学习:RenderBody,RenderPage和RenderSection

RenderBody,RenderPage和RenderSection 1. RenderBody 在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到<body>标签里有这样一条语句: @RenderBody() 其实它的作用和母版页中的<contentplaceholder>服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@Ren