猿问

一般处理程序中为何redirect不了?

public class EditCategory : IHttpHandler
{
private SQLHelper sqlhelper = new SQLHelper();

public void ProcessRequest(HttpContext context)
{
HttpResponse response
= context.Response;
HttpRequest request
= context.Request;

int id = Convert.ToInt32(request.Form["id"]);
string name = request.Form["name"];
string location = request.Form["location"];

string sql = "update SD_Category set CategoryName=@cname,Location=@loc where CategoryID=@cid";
OleDbParameter[] param
= new OleDbParameter[]{
new OleDbParameter("@cname",name),
new OleDbParameter("@loc",location),
new OleDbParameter("@cid",id)
};
if (sqlhelper.ExecuteNonQuery(sql, param, CommandType.Text) > 0)
{
//response.ContentType = "application/json";
//response.Write("{result: '类别更新成功!'}"); //{}表示js中对象
response.Redirect("CategoryManage.aspx"); //这里跳转不了

}
}
}
一般处理程序和CategoryManage页面在同一目录。我已确定语句已经执行到了if里面,但就是跳转不了。用firebug查看状态码是302
倚天杖
浏览 682回答 7
7回答

犯罪嫌疑人X

jquery ajax 做数据传输而已吧,跳转的话还是在完成状态后用Js跳转吧。

天涯尽头无女友

如果你是同步访问ashx文件的话,应该是可以跳转的,现在你是异步访问,异步访问不能改变页面的,只是单纯的数据传输

慕勒3428872

试试这个js window.parent.self.location.href=''

呼啦一阵风

这个是行的,昨晚试了,谢谢你

慕后森

一般处理程序啊,这个我想是为那些喜欢ajax的人弄的,这个时候用的只是客户端脚本,服务器端管不到他。 如果你是aspx页面去请求这个一般处理程序,为什么不直接请求aspx的后台?

人到中年有点甜

aspx页面隐藏类继承ihttphandler类然后实现ProcessRequst方法吗
随时随地看视频慕课网APP
我要回答