1. 父视图和子视图

父视图是包含了调用返回子视图的动作方法的视图。

父视图包含大部分用于呈现页面的HTML。子视图仅包含用于展示视图某部分的必须的标记。

例如,一个子视图创建一个列表,视图可能仅仅包含列表所需要的HTML,像下面的例子:

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

所有其它的标记(body, head等等)会在包含在父视图中。

2.调用Action和RenderAction辅助方法用于呈现子视图

ASP.NET MVC提供 HTML辅助方法(扩展方法)呈现大多数的 HTML元素,例如表单和链接,那种简化了例如像输入验证这样的公共任务。用于呈现子视图的两个 HTML辅助方法分别是:Aciton和RenderAction。这两个HTML辅助方法都在ChildActionExtensions类中。

Action方法以字符串的形式返回子视图,可以直接被呈现。

RenderAction方法在适当的地方呈现子视图。

例如,假设你有一个名为ChildList 的子视图,它包含了上一切显示的HTML代码。控制器包含了下面的动作方法,用于呈现子视图:

public ActionResult ChildList()
{
return View();
}

注意在控制器中,没有特定的方法呈现父视图或子视图。你呈现一个父视图,父视力再依次呈现它需要的子视图。
为了调用动作方法在父视图中呈现子视图,你可以像下面的示例一样使用Action辅助方法或RenderAction辅助方法。

// One alternative (renders a string)
<%= Html.Action("ChildList") %> //Another alternative (renders in place)
<% Html.RenderAction("ChildList"); %> 注意因为Html.Action辅助方法返回字符串,必须要等号"="。

3.为辅助方法传递参数
你可以在父视图的不同位置调用相同的动作方法,通过参数传递决定要呈现什么。Action和RenderAction两个方法都有方法重载接受一个包含了一对参数名和值的对象。下面的代码示例了RenderAction方法调用展示动作方法。在这种情况下,它传递一个包含在这部分呈现的子视图的名称值的匿名对象。标记呈现了一个“新闻”片段,接着是一个“天气”片段。

<% Html.RenderAction("Display", new { section = "News" }); %>
<% Html.RenderAction("Display", new { section = "Weather" }); %> 呈现动作方法看起来可能像下面的例子: public ActionResult Display(string section)
{
return View(section);
}

4.从其它控制器或区域调用动作方法

你可以调用不是当前控制器中的动作方法。要实现这样,你调用RenderAction的一个重载方法,指定动作方法和控制器的名称。

下面的示例展示了调用SectionController类中的动作方法。

第一个参数(字符串)是动作方法的名称,

第二个参数(也是字符串)是控制器的名称。

<% Html.RenderAction("Display", "Section"); %>   

如果你需要的动作方法在其它的区域中,你可以在对象中传递区域名称,如下:

<% Html.RenderAction("Display", new { area = "Navigation" }); %>   

通过使用RenderAction不同的重载方法,你就可以在不同的区域调用不同的控制器。

5.Razor视图引擎下简单实例:

controller:

        public ActionResult Index()
{
return View();
} //Html.Action
public ActionResult ActionOne()
{
return View();
} //Html.RenderAction
public ActionResult RenderActionOne()
{
return View();
} //输出内容
public void WriteText()
{
Response.Write("<p>WriteText:输出的内容</p>");
}

view:---Action

    <div>
<h4>显示当前Controller下的Action1</h4>
@Html.Action("Index")
<hr />
<h4>显示当前Controller下的Action2</h4>
@Html.Action("WriteText")
<hr />
<h4>显示UrlHelper下的UrlOne</h4>
@Html.Action("UrlOne","UrlHelper");
</div>

view:---RenderAction

        @{
Html.RenderAction("UrlOne", "UrlHelper");
}

Html.Action和Html.RederAction来创建子视图的更多相关文章

  1. MySQL创建子视图并查看的时候,字符集报错问题

    进入命令行模式, 如果MySQL数据库已经安装好,可以使用下列SQL命令查看MySQL当前的字符集设置: mysql> show variables like 'character_set_%' ...

  2. Handler系列之创建子线程Handler

    上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handl ...

  3. iOS创建子工程

    实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端.有很多工具方法,或者封装的自定义控件都是可以复用的.我们就可以把公用的代码抽取出去,新建一个工程, ...

  4. ahjesus linux连接阿里云ubuntu服务器并更改默认账号和密码,以及创建子账户

    先确保本地Linux服务器SSH服务开启,如果没有开启直接执行指令:service sshd start 然后我们使用ssh指令进行远程登陆 ssh username@ip-address 输入pas ...

  5. Ionic2开发笔记(2)创建子页面及其应用

    1. 当你第一次产生ionic2应用程序,这是生成的项目结构 ├── ├── config.xml      这包含配置应用程序的名称,和包名,将被用于我们的应用程序安装到一个实际的设备. ├── h ...

  6. 通过类创建子线程&同步锁

    一.通过类创建子线程 import threading class MyThread(threading.Thread): def __init__(self,num): threading.Thre ...

  7. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建子网格

    jQuery EasyUI 数据网格 - 创建子网格 使用数据网格(datagrid)的详细视图,用户可以展开一行来显示附加的详细信息. 任何内容都可以加载作为行详细,子网格也可以动态加载. 本教程将 ...

  8. EF5+MVC4系列(11)在主视图中用Html.RenderPartial调用分部视图(ViewDate传值);在主视图中按钮用ajax调用子action并在子action中使用return PartialView返回分布视图(return view ,return PartialView区别)

    一:主视图中使用Html.RenderPartial来调用子视图(注意,这里是直接调用子视图,而没有去调用子Action ) 在没有使用母版页的主视图中(也就是设置了layout为null的视图中), ...

  9. MUI框架-08-窗口管理-创建子页面

    MUI框架-08-窗口管理-创建子页面 之前写过这一篇,不知道为什么被删了,我就大概写了,抱歉 创建子页面是为了,页面切换时,外面的页面不动,让 MUI 写出来的页面更接近原生 app 官方文档:ht ...

随机推荐

  1. The Primo ScholarRank Technology: Bringing the Most Relevant Results to the Top of the List

    By Tamar Sadeh, Director of Marketing In today’s world, users’ expectations for a quick and easy sea ...

  2. Socket 接收本地短连接并转发为长连接 多线程

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...

  3. PHP iconv()编码转换函数用法示例

    PHP iconv()字符编码转换函数的用法,iconv()函数,在php5中是内置的,语法格式:iconv("UTF- 8","GB2312//IGNORE" ...

  4. Android Framework------之PowerManagerService的功能

    自从接触Android系统已经一年多了,这段时间内对于Android系统的Framework层的各个模块都有过接触,有时也做过分析,但是一直没能形成一个总结性的东西.这次下定决心,好好整理整理对于An ...

  5. 关于nginx架构探究(4)

    事件管理机制 Nginx是以事件驱动的,也就是说Nginx内部流程的向前推进基本都是靠各种事件的触发来驱动,否则Nginx将一直阻塞在函数epoll_wait()或suspend函数,Nginx事件一 ...

  6. favicon支持的图片格式

    为网站设置favicon有两种方式: 1.网站根目录下放置名为favicon.ico的图片,浏览器就会自动获取: 2.在页面中通过<link rel="shortcut icon&qu ...

  7. Decimal Basic 学习笔记(1)

    定义变量 LET a 输入变量值 INPUT a INPUT a,b 运算结果绝对值小于1前面的0省略,科学计数 PRINT语句 数值直接写,字符串用“” 通过 分号: 和 逗号,来分隔显示两个项目 ...

  8. 解决安装 Visual Studio 2012 后无法连接VPN的问题

    1. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定” 2. 找到下面的注册表子项,然后单击它: HKEY_LOCAL_MACHINE\System\CurrentControlS ...

  9. python的工作记录A

    马上进入工作自动化: [root@localhost ~]# cat svn_bbs.py import os,sys,commands,subprocess import re,time svnUr ...

  10. Jquery 对象集合的迭代扩展forEach

    if (jQuery && !jQuery.fn.forEach) { $(function () { (function ($) { $.fn.extend({ forEach: f ...