5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:
性别:秘密
最后登录:2007-04-12
http://Xmercy.5d.cn/
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2005/11/03 | ASP三层架构中的事件处理/表单提交(2)
类别(Develop)
|
评论
(0)
|
阅读(346)
|
发表于 09:43
2.表单处理中转/工厂
在(1)中可以看到表单设置中的action值是/action/?actionID=<%=action%>,其实就是提交到这个文件(index.asp作为网站默认文档的情况下)
/Action/index.asp
<!--#include file="ActionFactory.asp"-->
<%
Dim af : Set af = New ActionFactory
With af
.Execute()
End With
Set af = Nothing
%>
这里实例化ActionFactory类,它的代码如下:
<!--#include virtual="/Class/Xml//XmlReader.asp"-->
<%
Class ActionFactory
Private Xml
Private IID
Private IPath
Public Property Let Path(ByVal value)
IPath = value
End Property
Public Property Get Path()
If IsNull(IPath) Or IsEmpty(IPath) Then
IPath = Request.ServerVariables("HTTP_REFERER")
If IsNull(IPath) Or IsEmpty(IPath) Then
Response.Redirect("/index.asp")
End If
Call RePath(IPath)
End If
Path = IPath
End Property
Public Property Let ID(ByVal value)
End Property
Public Property Get ID()
If IsNull(IID) Or IsEmpty(IID) Then
IID = Request.QueryString("actionID")
If IsNull(IID) Or IsEmpty(IID) Then
Response.Redirect("/index.asp")
End If
End If
ID = LCase(IID)
End Property
Public Function Execute()
Xml.Load("/common/Validation.xml")
Dim Node : Set Node = Xml.SelectSingleNode("/formset/form[@action='" & ID & "' and @path='" & Path & "']")
Server.Transfer(Node.getAttribute("class") & ".asp")
End Function
Private Sub Class_initialize()
Set Xml = New XmlReader
End Sub
Private Sub Class_Terminate()
Set Xml = Nothing
End Sub
Private Sub RePath(ByRef value)
Dim tmpvalue : tmpvalue = value
Dim Re : Set Re = New RegExp
Re.Pattern = "\?.*"
tmpvalue = Re.Replace(tmpvalue, "")
If Request.ServerVariables("HTTPS") = "on" Then
Re.Pattern = "https://" & Request.ServerVariables("SERVER_NAME") & "(:" & Request.ServerVariables("SERVER_PORT") &")?"
Else
Re.Pattern = "http://" & Request.ServerVariables("SERVER_NAME") & "(:" & Request.ServerVariables("SERVER_PORT") &")?"
End If
tmpvalue = Re.Replace(tmpvalue, "")
Set Re = Nothing
value = LCase(tmpvalue)
End Sub
End Class
%>
这里读取XML配置文件,获取指定节点的class属性值,把表单称交给指定的方法处理,XML文档内容如下:
<?xml version="1.0" encoding="gb2312"?>
<formset>
<form name="newsinsert" path="/admin/newsform.asp" class="news" action="insert">
<item name="Title" dataType="Limit" min="1" max="30" msg="新闻标题必须填写且在30位以内" />
<item name="Hits" dataType="Number" msg="点击数只允许为正整数" />
</form>
<form name="newsedit" path="/admin/newsform.asp" class="news" action="edit">
<item name="Title" dataType="Limit" min="1" max="30" msg="新闻标题必须填写且在30位以内" />
<item name="Content" dataType="Require" msg="请填写内容" />
<item name="Hits" dataType="Number" msg="点击数只允许为正整数" />
</form>
<form name="newslist" path="/admin/newslist.asp" class="news" action="delete">
<item name="NewsIDs" dataType="Group" min="1" msg="请选择要删除的新闻" />
</form>
<form name="modify" path="/admin/changepassword.asp" class="admin" action="modify">
<item name="oldPassword" dataType="Require" msg="请填写旧密码" />
<item name="Password" dataType="SafeString" msg="请填写新密码" />
<item name="RePassword" dataType="Repeat" to="Password" msg="两次输入的密码不一致" />
<item name="vCode" dataType="Limit" min="5" max="5" msg="请填写5位的验证码" />
</form>
<form name="classinsert" path="/admin/classform.asp" class="class" action="insert">
<item name="ClassName" dataType="Require" msg="必须填写类名" />
<item name="OrderID" dataType="Number" msg="排序号只允许为正整数" />
</form>
<form name="classedit" path="/admin/classform.asp" class="class" action="edit">
<item name="ClassName" dataType="Require" msg="必须填写类名" />
<item name="OrderID" dataType="Number" msg="排序号只允许为正整数" />
</form>
<form name="login" path="/admin/login.asp" class="admin" action="login">
<item name="UserName" dataType="Require" msg="请填写用户名" />
<item name="Password" dataType="Require" msg="请填写密码" />
<item name="vCode" dataType="Limit" min="5" max="5" msg="请填写5位的验证码" />
</form>
</formset>
(未完待续)
0
评论
Comments
日志分类
首页
[66]
Develop
[14]
Plus
[3]
Melody
[7]
Essay
[38]
Archive
[4]