0

您将如何使用 jQuery 使用 Razor 语法发布到不同的控制器?下面是我尝试使用的代码。每个警报都会弹出我期望的确切信息,除了包含@Url.Action. 这给了我一个只包含控制器和方法(即/Agent/Details)的 URL。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对象的内容,它们是一回事。无论出于何种原因,您Details在使用 jQuery 搜索时都不会被定向到该页面。

4

1 回答 1

4

它正确发布并不奇怪。毕竟您使用的是 POST 请求,因此该sNumber参数不属于 URL 中的GET请求(例如/Agent/Details/3)。

您不会被重定向,因为当您使用 jQuery AJAX 方法时,它们会异步发生。您需要在$.post()函数的成功回调中自己处理重定向。

$.post('url', { data }, function(data) {
    // callback
});

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

于 2013-05-06T16:28:29.763 回答