关闭

初学解释器模式(asp.net2.0) [序]

536人阅读 评论(0) 收藏 举报

学了几天的解释器模式,总要写点实际的东西 吧,至少跟解释有点关联的,想得太多,就是什么事情都做不了。

就开始试着解释cms 中的标签吧。

来点简单的标签替换先

default.aspx.cs源代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections.Generic;

public partial class _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
string strCms = this.txtCms.Text;       
        NewsInfo news 
= new NewsInfo(1"新闻内容", System.DateTime.Now);
        
// List<NewsInfo> arrNews = new List<NewsInfo>();
       
// arrNews.Add(news);
        string strPattern = @"<cms:News/s+property=""(/w+?)""/s+(?:format=""(/w+)""/s+)?/>";
        
string strRes = "";//Regex.Replace(strCms, strPattern, "$1" + "__" + "$2");
        
//Response.Write(strRes);
        MatchCollection arrMatches = Regex.Matches(strCms, strPattern, RegexOptions.IgnoreCase);
        
foreach (Match match in arrMatches)
        
{
            strRes 
= NewsProp2Value(news,match.Groups[1].Value, match.Groups[2].Value);
            strCms 
= strCms.Replace(match.Value, strRes);
        }

        
this.txtRes.Text = strCms;
    }


    
/// <summary>
    
/// 将属性转成值
    
/// </summary>
    
/// <param name="property">属性名称</param>
    
/// <param name="format">格式</param>
    
/// <returns></returns>

    private string NewsProp2Value(NewsInfo news, string property, string format)
    
{
        
try
        
{
            
if (string.IsNullOrEmpty(format))
            
{
                
return news.GetType().GetProperty(property).GetValue(news, null).ToString();
            }

            
else
            
{
                
return string.Format("{0:"+format+"}",news.GetType().GetProperty(property).GetValue(news, null));
            }

        }

        
catch
        
{
            
return "";
        }
        
    }

   
}

default.aspx,包换输入html及显示结果 源代码:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    输入:
<asp:TextBox ID="txtCms" runat="server" TextMode="MultiLine" Rows="15" Width="574px" Height="193px">sdfsdfsdf&lt;a href=&quot;&lt;cms:News property=&quot;Id&quot; /&gt;&quot;&gt;&lt;cms:News property=&quot;Content&quot; /&gt;  [&lt;cms:News property=&quot;InTime&quot; format=&quot;yyyyMMdd&quot; /&gt;]&lt;/a&gt;
</asp:TextBox>
        
<br />
    输出:
<asp:TextBox ID="txtRes" runat="server" TextMode="MultiLine" Height="118px" Width="571px"></asp:TextBox>
        
<br />
    
<asp:Button ID="btn" runat="server" Text="获取" />
    
</div>
    
</form>
</body>
</html>

App_code./NewInfo.cs源代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// News 的摘要说明
/// </summary>
public class NewsInfo
{
    private int _id;
    private string _content;
    private DateTime _inTime;
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
    public string Content
    {
        get { return _content; }
        set { _content = value; }
    }
    public DateTime InTime
    {
        get { return _inTime; }
        set { _inTime = value; }
    }
    public NewsInfo(int id, string content, DateTime inTime)
    {
        _id = id;
        _content = content;
        _inTime = inTime;
    }
}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:391247次
    • 积分:6268
    • 等级:
    • 排名:第3914名
    • 原创:196篇
    • 转载:121篇
    • 译文:1篇
    • 评论:55条
    文章分类
    最新评论