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. Web前端浏览器兼容初探

    浏览器兼容是前端开发人员必须掌握的一个技能,但是初入前端的同学或者其他后台web开发同学往往容易选择忽略,而形成两个极端: 1 我最开始都是使用IE6,IE6上没问题,其它浏览器坑爹(多出现与前端后端 ...

  2. 前台任意页面调用自定义字段选项 box 单选 多选方法及查询

    在模板页增加函数,函数写法比较特殊,但是v9模板引擎nb,能够识别   <?              function xbox($field,$na){               $a=p ...

  3. Js打开网页后居中显示

    使用JavaScript定义打开网页后居中显示,并可为窗口设置大小,使用“window.open”方法打开新窗口:先来看完整的代码及调用方法: <html xmlns="http:// ...

  4. 模块SEO优化中{分类名称}分隔符去掉及只调用下级分类方法

    if($catid) { if($CAT['parentid']) { $seo_catname = ''; $tmp = strip_tags(cat_pos($CAT, 'DESTOON')); ...

  5. WebStorm 使用快捷键大全

    1. ctrl + shift + n: 打开工程中的文件,目的是打开当前工程下任意目录的文件. 2. ctrl + j: 输出模板 3. ctrl + b: 跳到变量申明处 4. ctrl + al ...

  6. recovery编译汉化

    当BoardConfig.mk中定义了recovery的字体且为中文字体时,自动编译为中文版,否则编译为英文版 例如: BOARD_USE_CUSTOM_RECOVERY_FONT := \" ...

  7. Unity中的各种寻找GameObject方法

    1.GameObject.Find():寻找Hierarchy面板中的activie 不为false的游戏对象: 路径如官方事例写法: public class ExampleClass : Mono ...

  8. JAVA构造方法,继承关系和SUPER关键字

    SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test() ...

  9. mkbundle(1) - Linux man page

    mkbundle(1) - Linux man page Name mkbundle, mkbundle2 - Creates a bundled executable. Synopsis mkbun ...

  10. 安卓应用使用QQ登录的申请流程

    “QQ互联”是腾讯为第三方网站.媒体.终端提供的开放平台.QQ互联拥有8个组件,提供诸如分享.登陆.like.qq提醒等能力.开发者使用QQ帐号登陆组件可以降低了用户的注册门槛,减少注册环节的用户流失 ...