将任何不存在的url或任何不存在的url发送到asp.net mvc3中的自定义控制器?

时间:2012-04-26 07:08:25

标签: c# asp.net-mvc asp.net-mvc-3 global-asax

我是asp.net mvc3的新手。我正在建立我的网站,我面临一个问题,我有一个名为Home的控制器和一个名为Index的方法,这个索引方法现在根据这种情况采用参数id一个有效的网址应该是这样的“http:// www。counterexample.com/Home/Index/1”但如果用户输入这样的网址“http:// counterexample,该怎么办呢? .com / whatsisthis“。它肯定会给出404错误,但我想这样做,当任何人键入这样的URL时,他应该被重定向到我在方法Thunder上名为ErrorDetails的另一个控制器以及所有的字符在/之后的url中的用户类型应该作为参数如下面的

来到此方法
 public class ThunderController : Controller
{
    public ActionResult ErrorDetails (string id)
    {
        var params = id ; // and the text "whatisthis" should store in param . 
        return View();
    }

}

请注意,用户可以输入任何网址,例如

  1. http://counterexample.com/whatsisthis/this
  2. http://counterexample.com/whatsisthis/this/call
  3. 我希望所有这些URL或任何不存在的URL都应该重定向到我的方法'ErrorDetails'。感谢

2 个答案:

答案 0 :(得分:1)

您可以在web.config文件中设置自定义错误。

<customErrors mode="RemoteOnly" >
   <error statusCode="404" redirect="/Thunder/ErrorDetails/" />
 </customErrors> 

抛出404错误后,用户将被重定向到ErrorDetails视图。

答案 1 :(得分:0)

使用custom errors(web.config),如下所示:

<customErrors mode="On" >
   <error statusCode="404" redirect="/Thunder/ErrorDetails/" />
   <!-- You can add other error codes or a generic one for other status codes here -->
</customErrors>