我们的网页通常会有好几个部分组成,一些公共的区域我们通常会做成PartialView(部分视图),但这些视图并不是完全固定的,所以还是需要 特定的Controller来控制。如果只是静态的html,虽然也可以做成PartialView,但意义不大。下面演示一下MVC3中如何调用 PartialView。

首先我们创建一个测试用的Controller:

TestController

public class TestController : Controller
{
    public ActionResult Message()
    {
        var testObj = new List<string>()
        {
            "aaa""bbb""ccc"
        };
 
        return PartialView("Message", testObj);
    }
}

里面就一个Action方法,Message(),返回的是一个名为“Message”的PartialView,并且把一管字符串作为参数传给了这个View。

通常,我们创建了Controller后,会点右键,添加一个View。VS会默认在Views文件夹里建立对应的view文件,这个例子里本应该 是“Test/Message.cshtml”。但对于partialView,我们不这样做。因为它是一个可重用的View,所以应该放到Shared 文件夹下。MVC是“约定先行”的编程,所以默认会去找Shared文件夹下的View以及当前页面所在Controller下的View。

所以我们得在Shared文件夹上点右键,添加一个View,并且选择“Create as a Partial View”,这样就不会添加layout等代码,是个完全空白的view。

然后,我们要根据Action的返回类型,做一些html的工作。这里是简单输出了List<string>中的每个字符串。

Message.cshtml

@model List<string>
 
<ul>
@foreach (var item in Model)
{
    <li>@item</li>
}
</ul>

最后,我们在别的视图里就可以调用这个PartialView了。

一种方法是指定Controller和Action:

<h3>Call Html.Action</h3>
@Html.Action("Message""Test")

但Controller和Action不是必须的,你也可以新建一个对象传给PartialView:

<h3>Call Html.Partial</h3>
@Html.Partial("Message"new List<string> { "ccc""ddd""eee" })

注:Html.Action("Message""Test")  @Html.Partial("Message"new List<string> { "ccc""ddd""eee" }) 

Html.Partial("Message"new List<string> { "ccc""ddd""eee" }) 约定在调用的View所在的文件夹找,或到Shared文件夹找……View的文件

还有一种比较常见的情况就是脚本请求,下面的代码就是通过JQuery去调用Test/Message,并把结果填充到ID为fuck的DIV中:

<h3>Use JQuery</h3>
<a href="javascript:;" onclick="loadFuck()">Invoke LoadPartial</a>
<div id="fuck">
     
</div>
 
<script type="text/javascript">
    function loadFuck() {
        $("#fuck").load('/Test/Message');
    }
</script>

ASP.NET MVC3调用分部视图-PartialView的几种方式(集)的更多相关文章

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

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

  2. MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-partialview.html 系列教程:MVC5 + E ...

  3. MVC |分部视图 PartialView()

    介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 Partia ...

  4. 爱上MVC~ajax调用分部视图session超时页面跳转问题

    回到目录 这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,sess ...

  5. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  6. asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染

    在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...

  7. ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...

  8. ASP.NET Core 入门笔记8,ASP.NET Core MVC 分部视图入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...

  9. ASP.NET MVC之分部视图和ChildAction(三)

    前言 上节我们已经非常清晰并且明确的讲了@Html.ActionLink的作用,这一节我们开始讲讲分部视图以及孩子Action. 话题 在C#中我们知道继承的目的是为了代码的复用,在Web应用程序同样 ...

随机推荐

  1. My.Ioc 代码示例——注册项的注销和更新

    当您需要从 Ioc 容器中注销/删除一个注册项的时候,您会怎么做呢? 有人曾经在 stackoverflow 上提问“如何从 Unity 中注销一个注册项”.对于这个问题,有人的回答是“有趣.你为什么 ...

  2. 02-测试、文件读写、xml解析

    测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...

  3. UICollectionView出现the behavior of the UICollectionViewFlowLayout is not defined because:

    2015-01-28 21:55:17.790 Demo[636:9351] the behavior of the UICollectionViewFlowLayout is notdefined ...

  4. Landsat元数据批量下载工具

    目录 前言 landsat数据情况简介 下载元数据 总结 一.前言        最近由于工作需要,需要下载部分landsat数据的元数据,老板大手一挥,给了十几年的landsat的path.row以 ...

  5. protocol buffer VS 2013编译出错

    protocol buffer 在VS2013编译会出现以下错误. 解决办法 把宏加上, 问题解决. 注: 该错误只出现在Debug版本.

  6. [C++] namespace相关语法

    本段测试代码包括如下内容: (1) 如何访问namespace中声明的名称:(2) namespace导致的相关冲突:(3) namespace可嵌套:(4) 可以在namespace中使用using ...

  7. UVA 10131 - Is Bigger Smarter? (动态规划)

    Is Bigger Smarter? The Problem Some people think that the bigger an elephant is, the smarter it is. ...

  8. C++函数覆盖的思考

    最近碰到一些问题,一开始很难调试和解决,最后发现原来是在基类函数的模板方法中对子类需要重写的函数没有使用virtual,如下 class Base { public: void say(){test( ...

  9. linux c数据库备份第五版

    linux下c实现的数据库备份程序终于迎来第五版啦,这样改程序就暂告一段落啦,有点小激动呢...接下来的一周(可能两周)时间里,我会用一个小型的网络游戏(比拼99乘法)作为我学习linux c的毕业之 ...

  10. P1896 [SCOI2005]互不侵犯King

    题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入输出格式 输入格式: 只有一行,包 ...