【问题标题】:Unable to 'call' controller action from ajax post无法从 ajax 帖子中“调用”控制器操作
【发布时间】:2021-10-19 14:24:19
【问题描述】:

我今天第一次使用 net.core,我试图从 ajax 调用中调用一个操作方法:

我的 Ajax 调用(来自普通的 HTML 页面)

$("#contactMap").click(function (e) {
    e.preventDefault();

    var url = "/MapObjects/mapContact";
    //I've tried MapObjectsController &         '@Url.Action("mapContact", 'MapObjects")'; But to no avail

    $.ajax({
        url: url,
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        cache: false,
        success: function (result) {
            alert("success");
        }
    });

});

在我的控制器中:

namespace myName.Controllers
{
    

public class MapObjectsController : Controller
{
    public IActionResult Index()
    {
        return View();
    }


    [HttpPost]
    public JsonResult mapContact()
    {
        Account account = new Account();

        return Json(account);
    }
}

}

“帐户”只是一个普通模型(在这种情况下为空)。我收到的只是控制台中的 404 错误。

如前所述,这是我第一次使用 .net Core(这是我在“普通”MVC 项目中多次编写的代码),所以我可能遗漏了一些非常明显的东西。

谢谢, C

【问题讨论】:

  • 嗨@SxChoc,当您通过邮递员发送请求时,它可以工作吗?您是否使用了类似app.UseEndpoints(endpoints ={endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");}); 的路由模板?请分享您的 Startup.cs。

标签: ajax asp.net-mvc asp.net-core-mvc


【解决方案1】:

首先,尝试在 Ajax 调用中显式调用@Url.Action()

$("#contactMap").click(function (e) { 
    e.preventDefault();
    $.ajax({
        url: '@Url.Action("mapContact", "MapObjects")',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        cache: false,
        success: function (result) {
                alert("success");
            }
    });
});

第二,检查你的路由规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2015-08-06
    • 2014-07-27
    相关资源
    最近更新 更多