基本信息
源码名称:asp.net mvc 自定义view解析引擎
源码大小:6.13M
文件格式:.rar
开发语言:C#
更新时间:2016-04-06
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;



using System.Web.Mvc;

using System.IO;

using System.Text.RegularExpressions;



namespace MVC

{

    /**//// <summary>

    /// 自定义的视图

    /// 视图需要继承 IView 接口

    /// </summary>

    public class MyView : IView

    {

        // 视图文件的物理路径

        private string _viewPhysicalPath;



        public MyView(string viewPhysicalPath)

        {

            _viewPhysicalPath = viewPhysicalPath;

        }



        /**//// <summary>

        /// 实现 IView 接口的 Render() 方法

        /// </summary>

        public void Render(ViewContext viewContext, TextWriter writer)

        {

            // 获取视图文件的原始内容  

            string rawContents = File.ReadAllText(_viewPhysicalPath);



            // 根据自定义的规则解析原始内容  

            string parsedContents = Parse(rawContents, viewContext.ViewData);



            // 呈现出解析后的内容

            writer.Write(parsedContents);

        }





        public string Parse(string contents, ViewDataDictionary viewData)

        {

            // 对 {##} 之间的内容作解析

            return Regex.Replace

            (

                contents, 

                @"\{#(. )#\}", 



                // 委托类型 public delegate string MatchEvaluator(Match match)

                p => GetMatch(p, viewData)

            );

        }



        protected virtual string GetMatch(Match m, ViewDataDictionary viewData)

        {

            if (m.Success)

            {

                // 获取匹配后的结果,即 ViewData 中的 key 值,并根据这个 key 值返回 ViewData 中对应的 value

                string key = m.Result("$1");

                if (viewData.ContainsKey(key))

                {

                    return viewData[key].ToString();

                }

            }



            return string.Empty;

        }

    }

}


view内容:


<html>

<head>

    <title>创建自定义的 ViewEngine 的 Demo</title>

</head>

<body>

    <div>name: {#name#}</div>

    <div>age: {#age#}</div>

</body>

</html>


解析结果:

name: webabcd
age: 70