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(0, 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

时间: 2024-10-24 21:13:30

Asp.net Vnext 实现IView的相关文章

Asp.net Vnext &amp; MVC6 系列

vs 2015  rc  vnext  1.0.0-beta4 ,本系列还将持续继续更新 Asp.net Vnext 调试源码 Asp.net Vnext 自定义日志 Asp.net Vnext 中间件实现基本验证 Asp.net Vnext 实现IView Asp.net Vnext TagHelpers Asp.net Vnext Routing Asp.net Vnext IValueProvider Asp.net Vnext ModelBinding Asp.net Vnext 模块化

微软 ASP.NET vNext MVC6 Web API3 新特性

今天讲课系统NET vNext 新特性ASP.NET vNext新特性, MVC6, Web API 3.0新特性,Roslyn编译器 ..NET Native.nGEN.JIT64和RyuJIt新特性.Visual Studio 2014新特性,并且做了Demo 你知道下一代.NET新变化,还有他们之间的关系吗?@微软中国MSDN @微软中国TechNet @微软中国 微软实战训练营 ! 国内最新的课程!贴近中外名企一线开发! http://54peixun.com/MSTrainingCam

初次开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、目前性能还不够好

继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-host测试,但是官方说运行环境的MONO版本至少需要3.4.1,我去年买了个表,至本文发布为止,你让我下地狱去找3.4.1吗,硬着头皮用3.4.0搞了一晚上,MAC一直停留在 httpapi.dll出错,Ubuntu Server 12.0.4 是不认其中的几个DLL包,具体哪几个也忘了,过段时间有了稳定版本再

Asp.net vNext 学习之路(三)

asp.net vNext 对于构建asp.net 程序带来了一些重大的改变,让我们开发asp.net 程序的时候更加的方便和高效. 1,可以很容易的去管理客户端的包比如jquery,bootstrap,angular. 2,能够自动的完成less 的编译,javascript 的压缩和单元测试. 3,在web 开发社区有非常丰富的工具生态系统. vs 2015 中有一些自动化的编译工具来支持一些第三方的工具, 1,Bower,可以看作是web 应用的包管理工具,bower 可以安装和恢复客户端

ASP.NET vNext 微笔记

关心 ASP.NET vNext 的人可能已经读过相关文章,例如:ASP.NET vNext @ 2014.那么,你可能已经知道,ASP.NET vNext 摆脱了 System.Web.DLL,把 Web API 合并至 MVC 框架,而且更全面地采用 task-based 异步程序模型.因此,我们应该可以期待,采用 vNext 应用程序将会更模块化.有更好的性能.更容易编写异步程序(搭配 C# 的 async/await 语法),而且更容易延展(scale). 此外,同样重要的是知道 ASP

Asp.net vnext的IIS部署

微软前段时间推出asp.net vnext,自个也尝试了一把,也写了几篇关于vnext特性的博客,如下. 但一直有个困扰的问题,asp.net vnext如何在iis部署,因为整个目录结构跟之前有了很大的不同,用f5直接运行启动iis express很方便查看结果,但如果部署到线上,就要用到iis,之前一直没找到合适的方案,很是郁闷,终于在昨天搞到深夜将这个问题解决了,那本文就是讲解如何通过vs2015部署vnext web项目. 大致的方案是通过http://codedbeard.com/as

Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建

最新的asp.net vnext已经可以支持在mac上运行了,当然用的是mono.相比linux来说,mac的安装略显繁琐.对于大部分用Windows开发asp.net的程序员来说,初次配置还是很费时的.我这里列出详细安装步骤,方便大家开发的同时,也给自己做个备忘. 要运行.Net程序,需要新的KRE环境,至少需要安装Xcode,Homebrew 和 ASP.NET vNext Command Line Tools.当然为了日后开发方便,我建议大家一并安装yeoman,为了安装yeoman,我们

兼容Mono的下一代云环境Web开发框架ASP.NET vNext

微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cloud-first)的新战略思想.Scott Hanselman发布博客对ASP.NET vNext进行了简要介绍.而且ASP.NET入驻Github 下一代ASP.NET将全部开源,写下本文记录下这个时刻. 微软在今年的Build大会上成立.NET开源基金会和以下这些产品的发布: .NET Nat

[译]Introducing ASP.NET vNext and MVC 6

原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext initiative, ASP.NET MVC 6 represents a fundamental change to how Microsoft constructs and deploys web frameworks. The goal is to create a host agnostic fr