关于jQuery在asp.net中使用ajax的探讨

与其说是探讨,不如说是提问。

在asp.net开始时要用到ajax异步的效果,之前用[Microsoft ASP.NET 2.0 AJAX Extensions],觉得这东西快发快,但速度慢。

所以之后用了jQuery来替换页面上的ajax效果,用着是挺好,界面上用$.post来提交请求数据,传入一个辨识码参数(如action=checkUserName),建一个Handler.ashx来接受前端的请求,然后调用后端的数据,返回给前端。

一开始用着没问题,但慢慢的ajax效果越来越多,Handler.ashx也越来越大,越来越多的action判断,这样使得代码不方便管理。

所以想寻求方案可以简化或分离了这块逻辑,请各位指点。

谢谢。

附上Handler.ashx代码:

  1 <%@ WebHandler Language="C#" Class="Handler" %>
2
3 using System;
4 using System.Web;
5
6 public class Handler : IHttpHandler {
7
8 public void ProcessRequest (HttpContext context) {
9 context.Response.ContentType = "text/plain";
10 HttpRequest request = context.Request;
11 HttpResponse response = context.Response;
12 string action = request["action"];
13 App app = new App();
14 string output = "";
15 if(action == null){
16 response.Redirect("login.aspx");
17 }
18 switch(action){
19 case "getProductByModel":
20 output = JsonService.DtToSON(app.GetProductByModel(request["model"]));
21 break;
22 case "addSalesDetailTemp":
23 SalesDetailTempModel m = new SalesDetailTempModel();
24 m.SalesNo = request["salesNo"];
25 m.ProductId = int.Parse(request["productId"]);
26 m.Color = request["color"];
27 m.Price = decimal.Parse(request["price"]);
28 m.Discount = decimal.Parse(request["discount"]);
29 m.Quantity = int.Parse(request["quantity"]);
30 output = app.AddSalesDetailTemp(m);
31 break;
32 case "getSalesDetail":
33 int salesId = int.Parse(request["salesId"]);
34 string salesNo = request["salesNo"];
35 output = JsonService.DtToSON(app.GetSalesDetail(salesId,salesNo));
36 break;
37 case "deleteSalesDetailTemp":
38 salesNo = request["salesNo"];
39 int productId = int.Parse(request["productId"]);
40 string color = request["color"];
41 app.DeleteSalesDetailTemp(salesNo, productId, color);
42 break;
43 case "searchSupplier":
44 string key = request["key"];
45 output = JsonService.DtToSON(app.SearchSupplier(key));
46 break;
47 case "getPurchaseDetail":
48 int purchaseId = int.Parse(request["purchaseId"]);
49 string purchaseNo = request["purchaseNo"];
50 output = JsonService.DtToSON(app.GetPurchaseDetail(purchaseId, purchaseNo));
51 break;
52 case "deletePurchaseDetailTemp":
53 purchaseNo = request["purchaseNo"];
54 productId = int.Parse(request["productId"]);
55 color = request["color"];
56 app.DeletePurchaseDetailTemp(purchaseNo, productId, color);
57 break;
58 case "addPurchaseDetailTemp":
59 PurchaseDetailTempModel p = new PurchaseDetailTempModel();
60 p.PurchaseNo = request["purchaseNo"];
61 p.ProductId = int.Parse(request["productId"]);
62 p.Color = request["color"];
63 p.Cost = decimal.Parse(request["cost"]);
64 p.Quantity = int.Parse(request["quantity"]);
65 output = app.AddPurchaseDetailTemp(p);
66 break;
67 case "getSalesNoByCustomer":
68 output = JsonService.DtToSON(app.GetSalesNoByCustomer(int.Parse(request["customerId"])));
69 break;
70 case "addReturnGoodsDetailTemp":
71 ReturnGoodsDetailTempModel r = new ReturnGoodsDetailTempModel();
72 r.ReturnNo = request["returnNo"];
73 r.ProductId = int.Parse(request["productId"]);
74 r.Color = request["color"];
75 r.Price = decimal.Parse(request["price"]);
76 r.Quantity = int.Parse(request["quantity"]);
77 output = app.AddReturnGoodsDetailTemp(r);
78 break;
79 case "getReturnGoodsDetail":
80 output = JsonService.DtToSON(app.GetReturnGoodsDetail(int.Parse(request["returnId"]), request["returnNo"]));
81 break;
82 case "deleteReturnGoodsDetailTemp":
83 string returnNo = request["returnNo"];
84 productId = int.Parse(request["productId"]);
85 color = request["color"];
86 app.DeleteReturnGoodsDetailTemp(returnNo,productId,color);
87 break;
88 case "modifyPassword":
89 int adminId = BasePage.AdminId;
90 string oldPassword = request["oldPassword"];
91 string newPassword = request["newPassword"];
92 output = app.ModifyAdminPassword(adminId, oldPassword, newPassword).ToString();
93 break;
94 case "addInstallmentTemp":
95 salesNo = request["salesNo"];
96 adminId = BasePage.AdminId;
97 DateTime payDate = DateTime.Parse(request["payDate"]);
98 decimal payAmt = decimal.Parse(request["payAmt"]);
99 bool received = bool.Parse(request["received"]);
100 //收款人,如未收款则置空
101 adminId = received ? adminId : 0;
102 output = app.AddInstallmentTemp(adminId, salesNo, payDate, payAmt, received).ToString();
103 break;
104 case "getInstallmentBySales":
105 salesId = int.Parse(request["salesId"]);
106 salesNo = request["salesNo"];
107 output = JsonService.DtToSON(app.GetInstallmentBySales(salesId,salesNo));
108 break;
109 case "deleteInstallmentTemp":
110 salesNo = request["salesNo"];
111 payDate = DateTime.Parse(request["date"]);
112 output = app.DeleteInstallmentTemp(salesNo, payDate).ToString();
113 break;
114 case "confirmReceive":
115 salesId = int.Parse(request["salesId"]);
116 DateTime date = DateTime.Parse(request["date"]);
117 adminId = BasePage.AdminId;
118 app.ConfirmReceive(salesId, date, adminId);
119 break;
120 case "searchProduct":
121 key = request["key"];
122 output = JsonService.DtToSON(app.SearchProduct(key,1,true));
123 break;
124 case "searchCustomer":
125 key = request["key"];
126 output = JsonService.DtToSON(app.SearchCustomer(key));
127 break;
128 }
129 response.Write(output);
130 }
131
132 public bool IsReusable {
133 get {
134 return false;
135 }
136 }
137 }
原文地址:https://www.cnblogs.com/caiwujia/p/jquery_ajax_in_aspnet.html