ASP.NET MVC5 视图相关学习

MVC Razor模板引擎中3个重要的方法:@RenderBody、@RenderPage、@RenderSection

一、@RenderBody

在Razor引擎中布局页面相似于asp.net中的母版页功能,视图的内容会和布局页面合并呈现。html

当前视图内容会经过布局页面(Shared/_Layout.cshtml) 中的@RenderBody()方法呈如今标签之间。asp.net

 

默认布局页面设置:布局

_ViewStart.cshtml网站

   @{.net

       Layout = "~/Views/Shared/_Layout.cshtml";htm

   }模板引擎

当建立新视图时,不指定任何布局页面,默认会加载_ViewStart.cshtml中指定的布局页面。io

若是不想使用默认布局页,能够在当前视图中设置Layout值,设置null不使用任何布局页。模板

注意:如_ViewStart.cshtml都是特定的名字,已下划线开头的都有特殊的意义。登录

二、@RenderPage

要引用呈现的视图,如网站头部、底部可单独放在一个共享的视图文件夹中,而后在布局页中使用。

 

方法调用,用法以下:

   @RenderPage("~/Views/Shared/_Header.cshtml")

带参数

   @RenderPage("~/Views/Shared/_Header.cshtml",new{name="tom",age=18)

调用页面获取参数:

//获取 RenderPage() 传递过来的参数

   @PageData["name"]

 

三、@RenderSection

此方法就是在Layout布局页中定义了分段,留给使用该布局页的视图来实现。

也就是说,若是某个视图模板中定义了一个节,那么能够把它单独呈现出来,用法以下:

 

   @RenderPage(“~/Views/Shared/_Header.cshtml”)

   @RenderBody()

   @RenderSection(“footer”)

 

固然还要在视图中定义节,不然会出现异常:

 

   @section footer {

       Footer Here

   }

为了防止因缺乏节而出现异常,能够给RenderSection()提供第2个参数:

   @RenderSection(“footer”, false)

 

 

 

ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别

一、带有Render的办法返回值是void,在办法内部进行输出;不带的返回值类型为MvcHtmlString,因此只能如许应用:
    @Html.Partial 对应 @{Html.RenderPartial(....);}
    @Html.Action 对应 @{Html.RenderAction(....);}

二、Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,而后把产生的页面带回到原本的View中再回传。而Partial、RenderPartial直接加载视图文件内容

使用方法:@Html.Action(action, controller)加载局部页面。
例如在模板页中使用:@Html.Action("Contact", "Company")
在CompanyController中有以下方法:
   public PartialViewResult Contact()

   {
      return PartialView();
   }

三、 Html.Partial能够直接供给用户控件名做为参数,而Html.Action需要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。

四、对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于需要设置一些Model的用户控件,推荐应用Html.Action。固然,有Model数据也是能够应用Html.Partial办法的,能够看办法的重载。

五、应用Html.Action有个益处,就是能够按照不合的场景选择不合的用户控件。

好比:
@Html.Action("UserInfoControl")在对应的UserInfoControl这个Action中,在用户未登陆的时辰,能够retun PartialView("LogOnUserControl");登陆后,能够retun PartialView("UserInfoControl");

 

RenderPage()和RenderPartial()的区别:

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

RenderPartial()是可使用viewdata,model等数据的。

 

如:@{Html.RenderPartial("BasicChart",model);}

  用这个重载能够在部分视图里使用强类型,而后在主视图中使用第二个参数传model过去

    @{Html.RenderPartial("BasicChart",ViewData["myData"]);}

 

Html.RenderPartial和Html.RenderAction的区别:

Html.RenderPartial适合用在重覆使用的UserControl,而且只须要透过Model来呈现内容,或是对于广告的UserControl也适合使用。

Html.RenderAction则会先去请求Controller的Action方法,若是此UserControl是须要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。

相关文章
相关标签/搜索