我这次帮一个客户做的项目完全基于jquey+asp.net,除了jquery以为,还大量应用了jquery的很多插件,比如TreeTable、Jquery UI、Flexgrid等等,然后这样调用:
var p = {};
p.Brand = $("#txtBrand").val();
var data = {};
data.Method = "SaveNewBrand";
data.Parameter = p;
$.ajax({
type: "POST",
data: $.toJSON(data),
url: "DictOperate.action",
dataType: "json",
success: function(r) {
if (r.success) {
alert("保存成功!")
} else {
alert("保存新品牌时出现错误!");
}
}
});
然后创建一个工厂类,该类负责把客户端的请求分配给某个类的某个方法,代码如下:
public class ActionFactory : IHttpHandlerFactory, IRequiresSessionState
{
public IHttpHandler GetHandler(HttpContext context, string requestType, String url, String pathTranslated)
{
//得到类名
string hanlerClassName = GetType().Namespace + "." + Path.GetFileName(pathTranslated).Split('.')[0];
Type objType = Type.GetType(hanlerClassName, true);
//动态生成对象
IHttpHandler handlerToReturn = (IHttpHandler)Activator.CreateInstance(objType);
return handlerToReturn;
}
public void ReleaseHandler(IHttpHandler handler)
{
}
public bool IsReusable
{
get
{
return false;
}
}
}
最后创建具体处理的类,如下代码:
public class DictOperate : IHttpHandler, IRequiresSessionState
{
static VehicleEntitys db = new VehicleEntitys();
public DictOperate()
{
}
public void ProcessRequest(HttpContext context)
{
JObject p = JObject.Parse(context.Request.Form[0]);
MethodInfo method = this.GetType().GetMethod((string)p["Method"]);
string execMethod = (string)method.Invoke(null, new JObject[] { (JObject)p["Parameter"] });
context.Response.Write(execMethod);
}