当前位置: 首页 > 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:前端自动化测试
  • #Java异常处理
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2019年如何成为全栈工程师?
  • exports和module.exports
  • HashMap ConcurrentHashMap
  • JAVA_NIO系列——Channel和Buffer详解
  • js递归,无限分级树形折叠菜单
  • npx命令介绍
  • SpringBoot 实战 (三) | 配置文件详解
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于 Cirru Editor 存储格式
  • 观察者模式实现非直接耦合
  • 好的网址,关于.net 4.0 ,vs 2010
  • 技术发展面试
  • 力扣(LeetCode)22
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端相关框架总和
  • nb
  • 06-01 点餐小程序前台界面搭建
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (1)(1.11) SiK Radio v2(一)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (论文阅读30/100)Convolutional Pose Machines
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)模仿学习-Action数据的模仿
  • (四)Linux Shell编程——输入输出重定向
  • .NET CLR基本术语
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net refrector
  • .net wcf memory gates checking failed
  • .Net Web窗口页属性
  • .net 使用ajax控件后如何调用前端脚本
  • .net操作Excel出错解决
  • .NET企业级应用架构设计系列之开场白
  • :=
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)