0

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

在我的主视图页面中,当我得到一个结果数据时,意味着我想从主页面重定向到ErrorTest.aspx页面jquery $.ajax

如何在没有相应控制器的情况下重定向视图页面以及如何使用 jquery 来实现这一点?

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

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

4

2 回答 2

1

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

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

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

window.location.href = "somecontroller/someaction";
于 2013-04-18T12:47:06.120 回答
0

如果不通过控制器,您不能直接从 MVC 应用程序请求视图。它从未为此设计(并且在大多数情况下明确阻止它)。话虽这么说,可以切换从控制器的操作返回的视图,实际上默认值是这样做的HandleErrorAttribute。与典型的 ASP.NET 应用程序不同,它会在发生异常时将您重定向到诸如 error.aspx 之类的页面,它HandleErrorAttribute采用视图名称,并在发生错误时返回该视图。但是,它不会将您重定向到您最初请求的页面。因此,如果您请求一个页面来查看某人的详细信息 (People/Details/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"});
于 2013-04-18T13:34:08.077 回答