MVC3分部视图

说到mvc3中的分部视图,不禁联想到webform里面的ascx分部控件,我们在MVC时代可以更加轻松的控制分部视图。MVC中主要分为两大类的分部视图,分别是Html.Partial(partialName)、Html.RenderPartial(partialName)和Html.Action、Html.RenderAction();

(1)Html.Partial(partialName)、Html.RenderPartial(partialName) 

●这两个方法我们可以指定任何的.cshtml文件,不一定只是分部视图。MVC中的视图就是有head、body标签,可以定义js,可以指定母版页,但是我们用vs添加分部视图的时  候,会看到只是一些基本的html标签,没有任何head、body,但是这不等于我们不可以添加,所以说partialName可以是任何视图文件。但是最好创建分部视图,因为我们最终  是要把这些分部视图合并为一个页面的,如果只是分部视图的html标签,那么在整体页面中html标签就会很干净。

●最好不要在分部视图中定义或者引用css以及js。如果需要可以再整体页面中定义或引用,因为:分部视图文件和整体页面的路径可能不在同一个目录下,会造成找不到css或js文   件的情况;也可能使得整体页面代码混乱。

(2)Html.Action、Html.RenderAction()

Action、RenderAction加载方法的视图,执行Controller → Model → View的顺序,然后把产生的页面带回到原来的View中再回传。

●Partial、RenderPartial直接加载视图文件内容

下面举例说明分部视图

示例1

返回一个分部视图的Action

public ActionResult GetUser()
{
    return PartialView();
}

在其他前台视图,需要这样写

@Html.Partial("GetUser")
@{
        Html.RenderPartial("GetUser");
    }

示例2

主视图向分部视图传递Model

@Html.Partial可以将数据实体和数据字典给分部视图,然后分部视图可以通过逐视图传递过去的数据再生成视图。

namespace MvcStart.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            Man_Model man = new Man_Model();
            man.Id = 1;
            man.Name = "张飞";
            man.Age = 23;
            return View(man);
        }

        public ActionResult getName(object o)
        {
            Man_Model man = o as Man_Model;
            return PartialView(man);
        }
    }

    public class Man_Model
    {
        public int Id { get;  set; }
        public string Name { get; set; }
     public int Age { get; set; }
    }
}

视图代码:Index.cshtml

@model MvcStart.Controllers.Man_Model
@Model.Id
@Model.Age

@Html.Partial("getName",Model);

getName.cshtml

@model MvcStart.Controllers.Man_Model
<div style="background-color:red">@Model.Name</div>

生成的HTML代码为:

<html>
<head>
    <title>Index</title>
</head>

<body>
23
<div style="background-color:red">张飞</div>
</body>
</html>

示例3

Html.RenderAction()之类的方法还支持传入参数

@Html.RenderAction("Left_Nav", "Nav", new{ ParentId = 3 });
@{ Html.RenderAction("Datagrid", "DataList", new { area = "Common" });    }

在Action里面直接加个参数ActionResult(int ParentId)就能够取得参数值。area会被MVC所截取,分析为跨区域调用。

时间: 2024-07-30 20:30:46

MVC3分部视图的相关文章

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult 导出EXCEL方法总结:MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可:优点:可设置丰富的EXCEL格式,缺点:需要依赖EXCEL组件,且EXCEL进程在服务器中无法及时关闭,以及服务器上会存留大量的不必要的XLS文件: 2.设置输出头为:application/ms-excel,再输出拼接的HTM

MVC分部视图

近期的项目一直在使用MVC,常常用到分部视图,下面就简单介绍一下分部视图. 使用分部视图最大的一个感受就是,整个页面颗粒化了,每个大页面都由这些小的颗粒组成,而且这些颗粒可以共享.大家的任务量便随之减轻了不少. 分部视图的优点: 1.   分部视图可以使系统插件化 . 2.   分部视图还可以带来一个优点,就是分工合作. 3.   分部视图还有一个在Mvc时代的优点,就是实现简单. 分部视图和视图的区别 视图有head.body标签,可以定义js,可以指定母板页,但是在我们用Vs右键添加 分部视

使用custombox和动态加载的分部视图中tooltip无效,或者tooltip看不到

首先MVC中动态加载的分部视图,需要在这个分部视图的View页面最后执行下这个函数 <script>    $("[data-toggle='tooltip']").tooltip(); //重新开启下tooltip</script> 就可以正常了 tooltip的z-index时候1070 bootstrap的modal时候1050,直接使用bootstrap的弹出框时候,tooltip是完全正常的 不过custombox的z-index达到9999 这个需要

Asp.net Mvc中分部视图获取后台数据并展示

方式一: 1.主页面中代码: @{Html.RenderAction("CreateLeftMenu");} 2.Controller中代码: public PartialViewResult CreateLeftMenu() { return PartialView("PartialAdminLeft", "123"); } 这里只返回字符串"123". 3.分部视图代码: @model object @{ string s

MVC |分部视图 PartialView()

介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 PartialViewDeomController控制器 [csharp] view plain copy using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.

MVC中的分部视图

背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上BS的项目做得少,遇到困难是避免不了的.霞姐说要界面灵活,那种在html里加onclick的时代已经过去.今天就来说说界面灵活之一--分部视图和Razor语法. 分部视图: 在一定程度上,分部视图与用户控件十分类似.他们都可以提高内容或代码的可重用性,但不同之处是,分部视图不需要使用ViewState

Nancy之区域和分部视图的使用

一.前言 在MVC中,区域(Area)和分部视图(PartialView)应该是我们用的十分频繁的两个东西 今天我们就在Nancy中,把这两个东西简单的用起来! 二.简单使用之区域 区域,无论是对开发过程还是代码管理都占据着一个重要的地位! 下面我们就来看看Nancy中的区域要如何用,其实,准确来说, Nancy中并没有明确提出区域这个概念,也只是我凭着与MVC的对照,自己添加的一个好理解的概念 下面就来看一下吧,这里用到了Nancy,Nancy.Hosting.Aspnet这些引用 这里是所有

基于layer封装的异步加载分部视图弹出层

背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta na

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

前言 上节我们已经非常清晰并且明确的讲了@Html.ActionLink的作用,这一节我们开始讲讲分部视图以及孩子Action. 话题 在C#中我们知道继承的目的是为了代码的复用,在Web应用程序同样也是如此,同样重复的代码我们需要进行复用. 例如在博客园我们需要渲染每个博客园友的信息.下面我们开始进行演示.我们在创建的项目中的Models文件夹下添加如下一个博客类: public class Blog { public long Id { get; set; } public string N