当前位置:编程学习 > C#/ASP.NET >>

汗,response.redirect 怎么会这样

 Protected Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Error
        Dim lError As Exception = Server.GetLastError
        Server.ClearError()
        Response.Redirect("~/error.aspx?err=" & lError.Message)

    End Sub  这是pgebase 基类的一个错误处理事件, 所有的aspx页面都继承该基类
现在 我有一个aspx页面调用了另外一个项目中的一个数据库访问类,由于出错抛出了一个异常,按理说是会执行上面的事件并跳转到error.aspx页面,现在的是问题是路径跳转了,但是地址不对,地址如下:
http://localhost:12940/myapp/~/error.aspx?err=nothisid,
为什么不认根目录运算符~
为什么直接 写  Response.Redirect("~/error.aspx?err=rrr") 可以正确跳转,在msdn看到~只用服务器控件,我是没理解这句话,为什么写个简单的click事件把Response.Redirect("~/error.aspx?err=test")加到该事件中能跳转呢,但是放到我这个基类的error事件中就出错了? --------------------编程问答-------------------- Response.Redirect("~/admin/Default.aspx")表示当前网站根目录 --------------------编程问答--------------------

Dim s As String = "~/error.aspx?err=" & lError.Message
Response.Redirect(s)
或者用
Response.Redirect(ResolveUrl("~/error.aspx?err=" & lError.Message))


--------------------编程问答-------------------- 经过尝试,发现如果消息

public partial class Default2 : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        throw new ApplicationException("fff:"); //如果消息中加冒号跳转错误
        //throw new ApplicationException("fff");  跳转正确 why????
    }
}
basepage.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for BasePage
/// </summary>
public class BasePage : System.Web.UI.Page 
{
public BasePage()
{
//
// TODO: Add constructor logic here
//
}

    protected void Page_Error(object sender, EventArgs e)
    {
        string err = Server.GetLastError().Message;
        Response.Redirect("~/default.aspx?err=" + err);

    }
}

--------------------编程问答-------------------- mark.. --------------------编程问答-------------------- 应该可以的
加HttpContext.Current呢 --------------------编程问答-------------------- 路过~~~学学!!! --------------------编程问答-------------------- 因为没有把参数值encode一下,而其参数值里有冒号,所以出错了 谢谢大家 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 7 楼 hsjhjh5555555 的回复:
因为没有把参数值encode一下,而其参数值里有冒号,所以出错了 谢谢大家


只能笑了。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,