使用jQuery to .post()到ASP MVC控制器方法w / Razor

时间:2013-05-06 16:23:51

标签: asp.net-mvc asp.net-mvc-3 jquery

你如何使用jQuery使用Razor语法发布到不同的控制器?下面是我试图使用的代码。除了包含@Url.Action的警报外,每个警报都会弹出我期望的确切信息。这给了我一个只包含Controller和方法的URL(即/Agent/Details)。 sNumber完全缺失。

奇怪的是,此代码仍然正确地发布到控制器,并带有正确的sNumber参数。但是,一旦控制器完成从数据库中获取代理并尝试呈现视图的过程,就不会发生任何事情。用户停留在同一页面上。

这是jQuery

                alert("input: " + item + ", map: " + map[item].sNumber);
                var sNumber = map[item].sNumber;
                alert("variable: " + sNumber);

                alert('@Url.Action("Details","Agent")', { id: sNumber });
                $.post('@Url.Action("Details","Agent")', { id: sNumber });

控制器中有大量的代码,所以我不会发布它。但是,这是最后一行

return View(bigAgent);

控制器使用sNumber输入参数从我们的数据库中获取记录,并将该代理的信息传递给Details视图。我使用jQuery搜索和常规搜索(正确重定向)检查了bigAgent对象的内容,它们是同一个。无论出于何种原因,在使用jQuery搜索时,您都不会被定向到Details页面。

1 个答案:

答案 0 :(得分:4)

它正确发布并不奇怪。您正在使用POST请求,因此sNumber参数不属于URL {1}}请求(例如GET)。

您没有被重定向,因为当您使用jQuery AJAX方法时,它们是异步发生的。您需要在/Agent/Details/3函数的成功回调中自行处理重定向。

$.post()

看起来您根本不应该使用AJAX并且应该执行常规表单提交,以便您可以在控制器中处理重定向。