ASP .Net MVC - 在jquery中没有共享控制器的共享文件夹中重定向视图页面

时间:2013-04-18 12:43:47

标签: jquery asp.net-mvc-2

我有一个 Test.aspx 页面,其中包含共享文件夹。我没有共享控制器。

在我的主视图页面中,当我从Error获取jquery $.ajax的结果数据时,表示我想从主页面重定向到 Test.aspx 页面。

如何在没有相应控制器的情况下重定向视图页面?我怎样才能通过使用jquery实现这一目标?

window.location.href = "/path/";

是否可以在没有控制器的情况下重定向视图页面。

2 个答案:

答案 0 :(得分:1)

  

如何在没有相应控制器的情况下重定向视图页面

不可能,没有意义。在ASP.NET MVC中,视图不能也不应该直接提供。

因此,您首先声明一个将返回此视图的控制器操作,并在您的AJAX调用中,您只需指向它:

window.location.href = "somecontroller/someaction";

答案 1 :(得分:0)

如果不通过Controller,您无法直接从MVC应用程序请求View。它从来没有为此设计(并且在大多数情况下明确地阻止它)。也就是说,可以从控制器的动作切换返回的视图,实际上默认HandleErrorAttribute执行此操作。与典型的ASP.NET应用程序不同,它在发生异常时将您重定向到error.aspx之类的页面,HandleErrorAttribute采用视图名称,并在发生错误时返回该视图。但是,它不会将您重定向到您最初请求的页面。因此,如果您请求页面查看某人的详细信息(人员/详细信息/ 123)并遇到错误,则URL将保持不变,但返回的视图将是错误视图的视图。

请记住,HandleErrorAttribute属性不会处理在MVC之外发生的错误。因此,它不会处理通用的IIS和ASP.NET错误。

如果您想使用javascript重定向到错误视图,则应使用HandleErrorAttribute。如果您想要一个完整的页面而不仅仅是一个视图,我建议您向Home Controller添加一个动作(甚至创建一个名为Errors的控制器)并从中请求该页面。如果您不喜欢使用/Home/Error/Errors/Exception请求页面的想法,您可以随时向应用添加新路由,以便将其缩短为/ Error或/ Exception。

routes.MapRoute("ErrorPage", // Route name
                "Error", // URL with parameters
                new {controller = "Home", action = "Error"});

routes.MapRoute("ExceptionPage", // Route name
                "Exception", // URL with parameters
                new {controller = "Errors", action = "Exception"});