Asp.net Vnext 实现IView
概述
Iview定义很简单,就是根据View上下文和TextWriter对象实现对View的呈现。
实现
实现IViewEngine
public class TestViewEngine : IViewEngine
{
public ViewEngineResult FindPartialView(ActionContext context, string partialViewName)
{ //如果viewName等于partial-test-view 就采用 TestPartialView
if (string.Equals(partialViewName, "partial-test-view", StringComparison.Ordinal))
{
return ViewEngineResult.Found(partialViewName, new TestPartialView());
}
return ViewEngineResult.NotFound(partialViewName, new[] { partialViewName });
} public ViewEngineResult FindView(ActionContext context, string viewName)
{
//如果viewName等于test-view 就采用 TestView
if (string.Equals(viewName, "test-view"))
{
return ViewEngineResult.Found(viewName, new TestView());
}
return ViewEngineResult.NotFound(viewName, new[] { viewName });
}
}
实现IView
public class TestPartialView : IView
{
public string Path { get; set; } public async Task RenderAsync(ViewContext context)
{
//这里没有视图,就把 world 输出浏览器 await context.Writer.WriteLineAsync("world");
}
}
public class TestView : IView
{
public string Path { get; set; } public async Task RenderAsync(ViewContext context)
{ await context.Writer.WriteLineAsync("<img src='"+context.ViewBag.Images + "' />");
}
}
控制器
public class HomeController: Controller
{
public ViewResult Index()
{
return View();
}
public ViewResult TestView() { ViewBag.Images = "/images/ASP-NET-Banners-01.png";
return View("test-view"); } }
启动类
public class Startup
{ public void ConfigureServices(IServiceCollection services)
{ services.AddMvc()
.ConfigureMvc(options =>
{
//加入视图引擎
options.ViewEngines.Insert(, typeof(TestViewEngine));
});
} public void Configure(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
运行

表达有限这里有一篇介绍的文章:http://www.cnblogs.com/artech/archive/2012/08/22/view-engine-01.html
源码下载http://pan.baidu.com/s/1qWOcZ0K
Asp.net Vnext 实现IView的更多相关文章
- POCO Controller 你这么厉害,ASP.NET vNext 知道吗?
写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...
- 在Linux上运行ASP.NET vNext
最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希 ...
- 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。
写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...
- Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建
最新的asp.net vnext已经可以支持在mac上运行了,当然用的是mono.相比linux来说,mac的安装略显繁琐.对于大部分用Windows开发asp.net的程序员来说,初次配置还是很费时 ...
- 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!
写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- 开发 ASP.NET vNext 初步总结(使用Visual Studio 14 CTP1)
新特性: vNext又称MVC 6.0,不再需要依赖System.Web,占用的内存大大减少(从前无论是多么简单的一个请求,System.Web本身就要占用31KB内存). 可以self-host模式 ...
- ASP.NET vNext 概述
兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,文档参照 ASP ...
随机推荐
- NO.4day LINUX centos 文件基本操作
LINUX centos 文件基本操作 1 LINUX简介 Linux的定义:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CP ...
- nltk30_Investigating bias with NLTK
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- Java5的新特性
原文出处:xixicat 序 这是Java语言特性系列的第一篇,从java5的新特性开始讲起.初衷就是可以方便的查看语言的演进历史. 特性列表 泛型 枚举 装箱拆箱 变长参数 注解 foreach循环 ...
- np.repeat函数
np.repeat用法 觉得有用的话,欢迎一起讨论相互学习~Follow Me np.repeat用于将numpy数组重复 一维数组重复三次 import numpy as np # 随机生成[0,5 ...
- 批量更新demo
因为批量更新数据库的时候,如果数据量太多,就会报错,这时候可以通过逻辑,批量更新,demo如下 @Test public void testbatch() { /** * 批量的值 */ int ma ...
- 动态规划:树形DP-选课(树形背包)
学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得相应的学分.在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选 ...
- 学以致用:Python爬取廖大Python教程制作pdf
当我学了廖大的Python教程后,感觉总得做点什么,正好自己想随时查阅,于是就开始有了制作PDF这个想法. 想要把教程变成PDF有三步: 先生成空html,爬取每一篇教程放进一个新生成的div,这样就 ...
- [Node.js] querystring类
和参数相关的帮助类,原生自带,直接 require('querystring') 即可使用. 此类一共包括4个方法: querystring.stringify(obj, [sep], [eq]) q ...
- 20155325 2016-2017-2 《Java程序设计》第6周学习总结
教材学习内容总结 分类 输入流&输出流 字节流&字符流 节点流&处理流 核心方法 Input Stream int read(byte[]b,int off,int len) ...
- CodeForces 816C 思维
On the way to school, Karen became fixated on the puzzle game on her phone! The game is played as fo ...