你如何使用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
页面。
答案 0 :(得分:4)
它正确发布并不奇怪。您正在使用POST请求,因此sNumber
参数不属于URL {1}}请求(例如GET
)。
您没有被重定向,因为当您使用jQuery AJAX方法时,它们是异步发生的。您需要在/Agent/Details/3
函数的成功回调中自行处理重定向。
$.post()
看起来您根本不应该使用AJAX并且应该执行常规表单提交,以便您可以在控制器中处理重定向。