2011-06-01 56 views
0

我的.NET项目处理AJAX请求。根本没有UI控件,它只是对每个AJAX文章的文本进行响应。适当的AJAX处理程序结构

这是我目前的结构:

<% 
SynchLock DBNull.Value 
    Main 
End SynchLock 
%> 

<script language="VB" runat="Server"> 

Sub Main 
    Dim a() As String = Request.Form("a").Split(" "c) 
    ' a: (0) version, (1) config, (2) userid, (3) sessionid, (4) activity 

    ' Initializations 

    Using conn As DbConnection = sess.Connection 
    Select Case a(4) 
    Case 0 
     ActivityOne 
    Case 1 
     ActivityTwo 
    Case 2 
     ActivityThree 
    ... 
    Case 28 
     ActivityTwentyEight 
    End Select 
    End Using 
End Sub 

'All the activity functions and lots of other Functions 

</script> 

这工作,但我认为它可以得到改善;我不知道如何继续。

一些活动称为子功能,我正在考虑打破一些进一步的活动。为了封装一个活动,我正在考虑功能改变活动类,像这样的所有功能:

Select Case a(4) 
Case 0 
    Dim a1 As New ActivityOne 
    a1.Execute 
... 
End Select 

这是正确的做法?如果我继续上课,我有相关的问题:

(1)我是否编码类的“新”子或“执行”(或其他名称)子?如果我编码的“新”子,然后我可以减少上述代码:

Select Case a(4) 
Case 0 
    New ActivityOne 
... 
End Select 

这似乎更容易,但有缺点吗?

(2)这些活动都依赖于其他Request.Form输入。我是否(a)从类中传递HttpContext.Current对象或(b)将Request对象传递给活动或(c)传递活动所需的特定Request.Form变量?

例如

(a)新ActivityOne'类访问HttpContext.Current.Form( “B”)等

Class ActivityOne 
    Sub New 
    Dim p1 As String = HttpContext.Current.Form("b") 
    ... 
    End Sub 
End Class 

(b)新ActivityOne(请求)

Class ActivityOne 
    Sub New(req As HttpRequest) 
    Dim p1 As String = req.Form("b") 
    ... 
    End Sub 
End Class 

(三)新ActivityOne(的Request.Form( “b”))

Class ActivityOne 
    Sub New(p1 As String) 
    ... 
    End Sub 
End Class 
+0

这是一个ASP.NET文件吗? – 2011-06-01 23:38:47

+0

是的,这是一个.aspx – ic3b3rg 2011-06-01 23:42:11

+1

你不应该为此使用ASPX文件。使用HTTPHandlers。 – Phill 2011-06-02 01:18:40

回答

1

都依赖于其他所需物品的活动uest.Form输入。我是否(a)从类中传递HttpContext.Current对象或(b)将Request对象传递给活动或(c)传递活动所需的特定Request.Form变量?

您可以传递Request.Form NameValue集合。

此外,由于您使用的是ASP.NET,因此您可以考虑使用支持ASP.NET AJAX的webservice click并为每个活动创建方法。这会简化你的代码。你也可以创建一个WCF REST服务并用jQuery调用它。

您不需要挑选查询字符串值或创建大量的switch语句。 ASP.NET具有处理这种事情的基础设施。

+0

我喜欢关于传递Request.Form NameValue集合的想法。我不认为我想要使用ASP.NET AJAX启用的web服务。我在JavaScript中使用XMLHttpRequest来处理AJAX,并且它工作得很好。 – ic3b3rg 2011-06-02 02:07:26