我有一个 Test.aspx 页面,其中包含共享文件夹。我没有共享控制器。
在我的主视图页面中,当我从Error
获取jquery $.ajax
的结果数据时,表示我想从主页面重定向到 Test.aspx 页面。
如何在没有相应控制器的情况下重定向视图页面?我怎样才能通过使用jquery实现这一目标?
window.location.href = "/path/";
是否可以在没有控制器的情况下重定向视图页面。
答案 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"});