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

原创 2007年10月03日 11:42:00

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

就开始试着解释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;
    }
}

 

asp.net2.0不支持部分新流览器问题的解决方案

ASP.NET4中不要相信Request.Browser.Cookies,Form验证要用UseCookies 从ASP.NET 3.5升级至ASP.NET4之后,遇到三种登...

asp.net2.0简单用户权限管理、站点登录、导航与权限管理

由于基础数据维护模块和一些系统性的配置只允许管理员操作,不想动用数据库来做用户和权限管理,想利用asp.net2.0自带的用户角色管理.1.首先在web.config文件的的节点下添加管理员的基本信息...

64位操作系统安装asp.net2.0框架不支持解决办法

64位操作系统安装asp.net2.0框架不支持解决办法 1、因用模版安装ASP.NET 2.0需先卸载64位的.net2.0 命令:C:\WINDOWS\Microsoft.NET\Fram...
  • sptoor
  • sptoor
  • 2013年05月21日 22:46
  • 4685

IIS6.0手动安装与配置asp.net2.0全过程

这个问题不是很新了,但是相信对一些新手来说还是有一定难度的,或是一些程序员本身就没有机会接触到这块,正好今天 我配置计算机,把这个过程记录下来,希望以后能用的上,也希望能给大家带来一点帮助(本次试用的...
  • szyone
  • szyone
  • 2013年07月04日 14:38
  • 601

ASP.NET2.0轻松搞定统计图表

主页:http://blog.csdn.net/21aspnet/           时间:2007.3.27 本文讲述如何绘制条形图,折线图,柱形图,面积图等常见图形。 效果图: ...

c#,NHibernate,ASP.NET2.0,Winform

using System; using System.Collections; namespace Model {     Person } xml version...

无法识别的配置节“system.webServer” windows 2003 server iis6搭建aspx网站,改ASP.NET2.0

无法识别的配置节“system.webServer” windows 2003 server iis6搭建aspx网站,改ASP.NET2.0,及局域网无法访问问题解决办法 右击默认网站,点击属性,...

整合greyBox和asp.net2.0,实现lightBox效果

最终效果如图所示:        除了弹出的链接的颜色是正常显示,原窗口的被灰色的背景所蒙盖,有点windows关机的时候的感觉。 并且,被灰色覆盖的原画面不能再进行操作,只能关闭新弹出的画面...
  • huyu107
  • huyu107
  • 2015年03月31日 13:52
  • 327

ASP.NET2.0中Page.ClientScript.RegisterClientScriptBlock与RegisterClientScriptBlock

最近的项目用到这样一段代码: //要根据后台取的值初始化页面显示 protected void Page_Load(object sender, EventArgs e)      {    ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初学解释器模式(asp.net2.0) [序]
举报原因:
原因补充:

(最多只允许输入30个字)