我有一个包含在共享文件夹中的Test.aspx页面。我没有共享控制器。
在我的主视图页面中,当我得到一个结果数据时,意味着我想从主页面重定向到Error
Test.aspx页面。jquery $.ajax
如何在没有相应控制器的情况下重定向视图页面以及如何使用 jquery 来实现这一点?
window.location.href = "/path/";
是否可以在没有控制器的情况下重定向视图页面..
我有一个包含在共享文件夹中的Test.aspx页面。我没有共享控制器。
在我的主视图页面中,当我得到一个结果数据时,意味着我想从主页面重定向到Error
Test.aspx页面。jquery $.ajax
如何在没有相应控制器的情况下重定向视图页面以及如何使用 jquery 来实现这一点?
window.location.href = "/path/";
是否可以在没有控制器的情况下重定向视图页面..
如何在没有相应控制器的情况下重定向视图页面
不可能而且没有意义。在 ASP.NET MVC 视图中不能也不应该直接提供服务。
因此,您首先声明将返回此视图的控制器操作,并且在您的 AJAX 调用中您只是指向它:
window.location.href = "somecontroller/someaction";
如果不通过控制器,您不能直接从 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"});