Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC返回错误视图_Asp.net Mvc_Jquery_View - Fatal编程技术网

Asp.net mvc MVC返回错误视图

Asp.net mvc MVC返回错误视图,asp.net-mvc,jquery,view,Asp.net Mvc,Jquery,View,在FirstView.cshtml文件中,我有一个事件-单击表的单元格会将您重定向到一个方法: $.get('@Url.Action("MyMethod", "MyController")', { someParameters }); 在方法MyMethod(无效)中,我调用并完成事件DownloadStringCompleted,其中我有: Response.Redirect(Url.Action("Second", "MyController")); 第二个是返回SecondView的操

在FirstView.cshtml文件中,我有一个事件-单击表的单元格会将您重定向到一个方法:

$.get('@Url.Action("MyMethod", "MyController")', { someParameters });
在方法MyMethod(无效)中,我调用并完成事件DownloadStringCompleted,其中我有:

Response.Redirect(Url.Action("Second", "MyController"));
第二个是返回SecondView的操作方法。SecondView是我想要的视图,但它从未显示在浏览器上。断点进入它,传递它,我在浏览器中获得FirstView

原因可能是什么?这可能是因为它们在同一个控制器中吗

方法如下: 第二个返回视图。在其主体中,我传递了一些ViewData参数

活动: 我读取一些JSON数据并调用重定向

奇怪的是,断点在正确的视图中移动,但我在浏览器中找到了错误的断点。

Srcee

我相信这是因为ajax函数一旦达到MyMethod操作,就“完成”了。重定向不会被触发,因为由于ajax调用,它不是管道的一部分(至少,这是我的基本理解)。您的另一种选择是按照以下思路做一些事情:

$.ajax({
  url: '@Url.Action("MyMethod", "MyController")',
  data: { id: 123 }, // i.e. someParameters 
  context: document.body,
  success: function(){
     window.location = '@Url.Action("Second", "MyController")';
  }
});
这些都是最重要的东西,可能不起作用,但这是一种替代方法

[编辑]-根据您稍后的编辑,我建议您根本不要使用ajax,因为不可能(根据我下面的评论)通过ajax调用在服务器上重定向。见:

而且:


请尝试在MyMethod中不调用Response.Redirect(…),以确认此操作。

请尝试在MyMethod中不调用Response.Redirect(…)。相反,请致电:

public ActionResult MyMethod()
{
  return Redirect(Url.Action("Second"));
}
请注意,如果控制器名称与您所在的控制器名称相同,则不需要显式包含它


我刚刚在我的dev box上做了一个测试,这很有效(假设我正确地建模了您的问题)。

但是重定向被命中,第二个方法被命中。我认为这仍然与这是一个ajax调用这一事实有关。我现在不在开发机器上,也不会尝试,但请尝试一下,看看会发生什么。今天晚些时候我也会这样做……但我不会从.cshtml调用Second。我从控制器上呼叫它。我不能从阿贾克斯那里打电话给你。嗯,好吧,我会考虑一下,然后再打给你。也许在每个动作中多编写一点代码会有所帮助,只是为了澄清我们正在处理的意图和技术限制。我想我想说的是-有没有可能重构一个普通的操作来返回你的SecondView?我在问题中添加了一些细节。你能显示你的代码的伪代码吗?@Srcee-你能在相关页面上发布更多的代码吗?我觉得我们看得不够。根据你与吉姆的讨论,我觉得我遗漏了一些东西。