在浏览器中编辑URL以获得无与伦比的控制器操作

时间:2014-10-11 05:28:09

标签: asp.net-mvc

我在Global.asax文件中编写了以下方法,如果我输入任何不适当的网址,我会将其重定向到默认控制器操作。

protected void Application_Error(object sender, EventArgs e)
        {
            Exception exception = Server.GetLastError();
            Response.Clear();
            HttpException httpException = exception as HttpException;
            RouteData routeData = new RouteData();
            if (httpException != null)
            {
                switch (httpException.GetHttpCode())
                {
                    case 404:
                        routeData.Values.Add("controller", "Info");
                        routeData.Values.Add("action", "person");                          
                        Server.ClearError();
                        IController infoController = new InfoController();
                        infoController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
                        break;
                }
            }            
        }

如果我输入的网址为http://localhost:2032/asjjsjdj,则会将我重定向到person控制器中的Info操作,但会按原样显示网址。它还应将URL显示为http://localhost:2032/Info/person。请让我知道我该怎么做。

2 个答案:

答案 0 :(得分:0)

要更改浏览器中的网址,您可以使用Redirect但必须ClearError之前修改mvc以处理错误:

...
switch (httpException.GetHttpCode())
{
    case 404:
        HttpContext.Current.ClearError();
        HttpContext.Current.Response.Redirect("/Home/Contact");
        break;
}
...

答案 1 :(得分:0)

您必须将HTTP状态代码更改为3xx才能完全重定向,因此您可以通过Response.Redirect

执行此操作
       switch (httpException.GetHttpCode())
       {
             case 404:
                  Server.ClearError();
                  Response.Redirect("~/home/about");
                  break;
       }