Ajax 调用不同的控制器

Kev*_*vin 2 javascript ajax asp.net-mvc

我试图在 Ajax 调用中调用不同的控制器方法。我已经查看了不同的帖子来寻找解决方案,但因为我不完全理解他们的解决方案是什么(底部的链接)。我正在从我的 Home 控制器调用我的 ajax 调用,尝试调用我的生产控制器中的方法。

“请求 URL:http://localhost.59223/Home/Production/CreateNewProductionGoal

这是我收到的错误。

我已尝试按照网上建议将URL更改为。.../Production/CreateNewProductionGoal and to ~/Production/CreateNewProductionGoal这些实现都不起作用,因为我收到404 错误,页面未找到

链接的解决方案之一提到使用 loc var 键,我对此不熟悉。

另一个建议使用按钮,但在我的情况下这不是一个选项。

            $.ajax({
            type: 'post',
            url: "Production/CreateNewProductionGoal",
            dataType: "json",
            data: data,  //Creating a ProductionGoalViewModel to pass into the CreateNewProductionGoal method
            success: function (data) {
                //$('#Dashboard').load("/Home/UpdateView/" + selectProductionLine);
            }
        });
Run Code Online (Sandbox Code Playgroud)

Ajax 调用不同的控制器

如何对不同的 MVC 控制器进行 ajax 调用

为了澄清起见,我正在寻找有关如何从一个 Ajax 调用到另一个的分步说明MVC controller

谢谢!

Res*_*uum 6

/您应该在 url 中包含前导以调用正确的 URL:

$.ajax({
    ...
    url: "/Production/CreateNewProductionGoal",
    ...
});
Run Code Online (Sandbox Code Playgroud)

这样,请求就会转至http://localhost.59223/Production/CreateNewProductionGoal

不同的路径,如果您当前查看http://example.com/Home/

  • your/path:这会将当前路径作为起始路径,即并将其添加到那里,从而产生http://example.com/Home/your/path.

  • ~/your/path: 可以在 asp.net 服务器代码中使用,例如 Razor,以指示网站的根目录(仅当它呈现时)。浏览器不考虑~/特殊标记,在渲染时会导致http://example.com/Home/~/your/pathhttp://example.com/your/path

  • .../your/path: 没什么特别的,导致http://example.com/Home/.../your/path

  • ../your/path: 上一级目录,生成http://example.com/your/path. 但这会导致嵌套目录的路径不同。

  • /your/path:绝对路径,将始终导致http://example.com/your/path,与嵌套目录无关。

有关绝对 URL 和相对 URL 的更多信息,请参阅绝对 URL 与相对 URL