当前位置: 首页 > news >正文

.net mvc部分视图

@RenderPartial()

将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)

RenderPartial 不需要创建 Controller 的 Action ,而 RenderAction 需要在 Controller 创建要加载的 Action。RenderAction 会先去调用 Contorller 的 Action ,最后再 呈现视图,所以这里 页面会在 发起一个链接。如果这个部分视图只是一些简单 的 html 代码,请使用 RenderPartial。 但如果这个部分视图 除了有 html 代码外,还需要 通过 读取数据库里的数据 来渲染,就必须使用 RenderAction 了,因为 它可以在 Action 里调用 Model里的 法读取数据库,渲染视图后在呈现,而 RenderPartial 没有 Action,所以无法做到。

Partial 可以直接输出内容,它内部是 将 html 内容转换为 string 字符(MVCHtmlString),然后缓存起来,      最后在一次性输出到页面。显然,这个转换的过程,会降低效率,所以通常使用 RenderPartial 代替

(废话少说,上代码)

案例一:在主视图A  调用控制器B呈现部分视图B

这是部分视图B的控制器代码:

 

 [ChildActionOnly]
        public PartialViewResult ChildAction(DateTime time)
        {
            string greetings = string.Empty;
            if (time.Hour > 18)
            {
                greetings = "Good evening. Now is " + time.ToString("HH:mm:ss");
            }
            else if (time.Hour > 12)
            {
                greetings = "Good afternoon. Now is " + time.ToString("HH:mm:ss");
            }
            else
            {
                greetings = "Good morning. Now is " + time.ToString("HH:mm:ss");
            }
            return PartialView("ChildAction", greetings);
        }

 

这是分部视图B的视图代码:

@model string
<h2>@Model</h2>
<h2>这是分部视图B</h2>

 

这是主视图A的控制器代码,不需要写什么,返回主视图A就行:

// GET: Hom
        public ActionResult Index()
        {
            return View();
        }

 

这是主视图A的视图代码:

@{
    Layout = null;
}
<h2>主页前</h2>

//链接到分部视图B的控制器 @Html.Action("ChildAction", new { time = DateTime.Now }) <h2>主页后</h2>

 

运行效果:

 

 

在案例一基础上实现无刷新分部视图效果:

要通过ajax来调用ChildAction返回PartialView,首先要去掉ChildAction开头写的[ChildActionOnly]。因为这种调用方法不算ChildAction调用。

再将主视图A的代码修改为:

@{
    Layout = null;
}
<script src="~/Scripts/jquery-1.10.2.js"></script>
<h2>主页前</h2>
<hr />
<div id="header"></div>
<hr />
<h2>主页后</h2>
<script>

//设置为每1秒在主视图A更新部分视图B一次 setInterval(LoadAction, 1000); function LoadAction() { var time = new Date(); $.ajax({ type: "POST", url: '@Url.Action("ChildAction", "Hom")', data: { time: time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds()}, datatype: "json", success: function (data) { $('#header').html(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }); } </script>

 

 其他代码不需要改变。

即可实现在主视图局部刷新分部视图。

 

 

 

 

案例二:

Home控制器:

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult PartialPage(string name, int id)
{
ViewBag.id = id;
ViewBag.name = name;
return View("~/Views/Shared/PartialPage.cshtml");
}
}

Index视图:

 @Html.Action("PartialPage", "Home", new { name = "SharpL", id = 1 })
<p>原视图中的p元素</p>

在Views下的Shared下新建部分PartialPage视图:

<p>我是分部视图</p>
<p>博客名为:@ViewBag.name</p>
<p>博客的id为:@ViewBag.id</p>

项目目录:

 运行:

 

 

 

转载于:https://www.cnblogs.com/fzqm-lwz/p/10056327.html

相关文章:

  • MaxCompute用户初体验
  • 兼容性问题
  • JS订阅发布模式
  • 《Web全栈工程师的自我修养》读书笔记
  • 五、自定义转化器,视图层之httprequest对像、HttpResponse、JsonRepons
  • $(selector).each()和$.each()的区别
  • CSS盒模型的介绍
  • Docker 入门
  • 安装Kubernetes的坑 ---- Flanneld
  • 简单类型和对象的区别
  • Java基础之关键字
  • 作用域和名称空间
  • 云主机文件系统readonly处理案例
  • STM8S003F3通过PWM波实现三基色呼吸灯(转)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • CAP 一致性协议及应用解析
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Java IO学习笔记一
  • Node 版本管理
  • React as a UI Runtime(五、列表)
  • scala基础语法(二)
  • 程序员该如何有效的找工作?
  • 初识 beanstalkd
  • 基于axios的vue插件,让http请求更简单
  • 前端技术周刊 2019-02-11 Serverless
  • 前端之React实战:创建跨平台的项目架构
  • 我与Jetbrains的这些年
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • #define与typedef区别
  • (2)STL算法之元素计数
  • (52)只出现一次的数字III
  • (C++20) consteval立即函数
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (WSI分类)WSI分类文献小综述 2024
  • (二)hibernate配置管理
  • (离散数学)逻辑连接词
  • (一)RocketMQ初步认识
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转) Face-Resources
  • (转)memcache、redis缓存
  • .bashrc在哪里,alias妙用
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 中的路径问题
  • .net wcf memory gates checking failed
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @Responsebody与@RequestBody
  • [C++核心编程](四):类和对象——封装
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [Design Pattern] 工厂方法模式
  • [IE编程] 如何获得IE版本号