.net 开发中对ASHX文件用处的疑问

天道酬勤_MWH 天道酬勤_MWH 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我对.NET开发的经验还稍浅,以前是开发JAVA的.可能由于能力问题现在对很多基础概念理解不深。处于能开发,但是不能有效率高质量的开发。对于ashx文件我们技术总监给我的建议,也是浅显易懂。大部分的时候用来处理ajax的程序代码。但是我深深受那种action的思想,总觉得它这个类和java的action类似乎能做一样的事情,于是就把它写成了这个样子。业务逻辑,页面跳转都能正常的跳转。也能正常的登录和注销。总而言之这样子是能跑的起来的。
但是我想知道我这样写代码的弊端在哪里。或者说有致命的问题,那么我肯定就要把它改正了。
然而我们这个项目 有很多模块都需要登录,有点整合的意味。所以我一定要把表单处理给通用化。
不能写在页面的cs类里面、

//我前台是依靠 UserAction.ashx?Method=UserNameLogin 这样的action值把参数提交过来的
然后调用业务逻辑层做操作,最终返回结果跳转页面。


<%@ WebHandler Language="C#" Class="UserAction" %>

using System;
using System.Web;
using System.Web.SessionState;

public class UserAction : IHttpHandler,IRequiresSessionState{

private HttpContext Mcontext;
private string FromUrl;

public void ProcessRequest(HttpContext context) {

context.Response.ContentType = "text/html;charset=utf-8"; ;
Mcontext = context;
string Method = context.Request["Method"];
FromUrl = context.Request.ServerVariables["HTTP_REFERER"];//保存从何页面发送来的请求,权限不通过则返回

switch (Method)
{
case "UserNameLogin" : UserNameLogin(); break;
case "UserPhoneLogin": UserPhoneLogin(); break;
case "UserExit": UserExit(); break;
}

}

public void UserExit() //退出用户
{
Mcontext.Session["User"] = null;
Mcontext.Session["BUser"] = null;
Mcontext.Response.Write("<script> alert('退出成功!');</script>");
Mcontext.Response.Write("<script> location.href='index.aspx'; </script>");
}

public void UserPhoneLogin()//根据手机号登录
{
string UserType = "";
string UserName = "";
string UserPassword = "";
UserType = Mcontext.Request["usertype"];
UserName = Mcontext.Request["username"];
UserPassword = Mcontext.Request["password"];

if (UserType == "1")//个人登录
{
FYM_User fu = new FYM_User();
fu.U_phone = UserName;
fu.U_password = UserPassword;
UserBLL ub = new UserBLL();

fu = ub.LoginByUpPwd(fu);

if (fu.id != 0)
{
Mcontext.Session["User"] = fu;
Mcontext.Session["BUser"] = null;

Mcontext.Response.Write("<script> alert('登录成功!欢迎您:" + fu.U_username + "您的用户类别为个人用户');</script>");
Mcontext.Response.Write("<script> location.href='index.aspx'; </script>");
}
else
{
Mcontext.Response.Write("<script> alert('登录失败,个人手机号或密码错误!');</script>");
Mcontext.Response.Write("<script> location.href='" + FromUrl + "'; </script>");
}


}

if (UserType == "2")//企业登录
{
FYM_BusinessUser fu = new FYM_BusinessUser();
fu.B_userphone = UserName;
fu.B_password = UserPassword;
BUserBLL ub = new BUserBLL();

fu = ub.LoginByUpPwd(fu);

if (fu.id != 0)
{
Mcontext.Session["User"] = null;
Mcontext.Session["BUser"] = fu;

Mcontext.Response.Write("<script> alert('登录成功!欢迎您:" + fu.B_username + "您的用户类别为企业用户');</script>");
Mcontext.Response.Write("<script> location.href='index.aspx'; </script>");
}
else
{
Mcontext.Response.Write("<script> alert('登录失败,企业联系人电话或密码错误!');</script>");
Mcontext.Response.Write("<script> location.href='" + FromUrl + "'; </script>");
}
}
}

public void UserNameLogin() //根据用户名登录
{
string UserType = "";
string UserName = "";
string UserPassword = "";
UserType = Mcontext.Request["usertype"];
UserName = Mcontext.Request["username"];
UserPassword = Mcontext.Request["password"];

if (UserType == "1")//个人登录
{
FYM_User fu = new FYM_User();
fu.U_username = UserName;
fu.U_password = UserPassword;
UserBLL ub = new UserBLL();

fu = ub.LoginByUnPwd(fu);

if (fu.id != 0)
{
Mcontext.Session["User"] = fu;
Mcontext.Session["BUser"] = null;

Mcontext.Response.Write("<script> alert('登录成功!欢迎您:"+fu.U_username+"您的用户类别为个人用户');</script>");
Mcontext.Response.Write("<script> location.href='index.aspx'; </script>");
}
else
{
Mcontext.Response.Write("<script> alert('登录失败,个人用户名或密码错误!');</script>");
Mcontext.Response.Write("<script> location.href='" + FromUrl + "'; </script>");
}


}

if (UserType == "2")//企业登录
{
FYM_BusinessUser fu = new FYM_BusinessUser();
fu.B_username = UserName;
fu.B_password = UserPassword;
BUserBLL ub = new BUserBLL();

fu = ub.LoginByUnPwd(fu);

if (fu.id != 0)
{
Mcontext.Session["User"] = null;
Mcontext.Session["BUser"] = fu;

Mcontext.Response.Write("<script> alert('登录成功!欢迎您:" + fu.B_username + "您的用户类别为企业用户');</script>");
Mcontext.Response.Write("<script> location.href='index.aspx'; </script>");
}
else
{
Mcontext.Response.Write("<script> alert('登录失败,企业用户名或密码错误!');</script>");
Mcontext.Response.Write("<script> location.href='" + FromUrl + "'; </script>");
}
}

}



public bool IsReusable {
get {
return false;
}
}

}


...全文

相关推荐

ashx文件的使用

简单介绍 ashx 的使用,学习很有帮助

juan2001

【ASP.NET编程知识】ashx介绍以及ashx文件与aspx文件之间的区别.docx

【ASP.NET编程知识】ashx介绍以及ashx文件与aspx文件之间的区别.docx

mmoo_python

asp.net利用ashx文件实现文件的上传功能

原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。 方法一:Form表单提交 html代码: &lt;!DOCTYPE html> &lt;html&gt; &lt;head&gt; &lt;meta charset=utf-8 /&gt; &lt;title&gt;上传文件&lt;/title&gt; [removed][removed] &lt;/head&gt; &lt;body&gt; &lt;form action=UploadHandler.ashx method=post enctype=multipart/form-data&gt;

weixin_38735182

asp.net中AJAX与ashx页面交互简单示例

在asp.NET中通过不用任何控件向ashx页面发送ajax请求,返回数据到前台,在vs2008中可直接运行并有详细的注释。

jxupnihaoma

ashx介绍以及ashx文件与aspx文件之间的区别

ashx是什么文件? .ashx 文件用于写web handler的。.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。 .ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。 ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供). ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看: 代码示例:当然你完全可以用.aspx 的文件后缀。使用.ashx 可以让你

weixin_38664469
评论 5
收藏 已收藏
分享
返回顶部
天道酬勤_MWH
.NET社区 62,271 成员 668,968 内容