以上就是讨论的几种可行的方案——不管是 asp.net webform 方式还是 asp.net MVC 方式,都是可行的。
昨天晚上又发现一种方案:使用 ashx+jQuery。
.ashx 是一个专门的用于处理 HttpHandler 的文件类型,用来处理自定义 Http 请求,可以在 web.config 定义运行时针对 ashx 的 Http 请求处理方式。
<add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" validate="false" />
这样我们就可以用 SimpleHandlerFactory 来处理 ashx 的 http 请求了。
在 ashx 的类中实现 IRequiresSessionState 接口,using 一下 System.Web.SessionState 就可以使用 Session 了,很方便
using System.Web.SessionState;
public class checkCookie : IHttpHandler ,IRequiresSessionState
{
// todo somthing
}
实例:使用 ashx+jQuery 实现 Email 存在的验证
.ashx 文件
<%@ WebHandler Language="C#" Class="CheckUser" %>
using System;
using System.Web;
public class CheckUser : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(UserRule.GetInstance().IsUserExist(context.Request["Email"]));
}
public bool IsReusable
{
get
{
return false;
}
}
}
html:
<input type="text" id="email" />
<input type="button" value="test" onclick="check_email()" />
js:
function check_email()
{
var email = $("#email").attr("value");
$.get("../ajax/checkuser.ashx",
{ Email: email },
function(data)
{
window.alert(data);
});
}
simple 的,显然效率会比较高。 不过 simple 的就只能够做点 simple 的事情。如果要输出 html,还是不太方便。如果要输出 html 的话,我还是比较倾向于用 ascx 处理内容,webform 做包装 所以 ashx+jQuery 应该算是是一个 asp.net 里轻量级的解决方案