如何在 MVC 控制器中通过 WebApi 从 HTML 页面发布数据

Posted

技术标签:

【中文标题】如何在 MVC 控制器中通过 WebApi 从 HTML 页面发布数据【英文标题】:How to POST Data from HTML Page via WebApi in MVC Controller 【发布时间】:2020-02-24 18:10:39 【问题描述】:

用于从 html 中获取输入数据的函数

 function saveclickdata()
    

        var allData = 
            InvNo:document.getElementById('TbInvNo').value,
            GrossSale:document.getElementById('TbOrderTotal').value,
            discount:document.getElementById('TbDiscount').value,
            CusCash:document.getElementById('TbCash').value,
            CusBal:document.getElementById('TbBalance').value,       
        ;
        $.ajax(
            url: "\Controllers\POSController.cs\SaveData",
            type: 'POST',
            data: allData,
            success: function (res) 
                alert("success");
            ,
            error: function (err) 
                alet("Error");
            
        );

控制器中用于发布数据的 API

[HttpPost]
JsonResult SaveData(POSMater collection)
     

        if (collection.InvNo.ToString() == null)
        
            var LocalInvNo = (from b in db.TblPOSMasters select b).FirstOrDefault();
            int MaxInvNo = Convert.ToInt32(LocalInvNo) + 1;
            collection.InvNo = MaxInvNo;
            TblPOSMaster master = new TblPOSMaster();
            master.InvNo = collection.InvNo;
            master.AddBy = 1;
            master.AddDate = DateTime.Now;
            master.CashStatus = "A";
            master.CompId = 1;
            //master.CreditAmt = collection.CreditAmt;
            //master.CrCardNo = collection.CrCardNo;
            master.CusCash = collection.CusCash;
            master.CusId = 1;
            master.GrossSale = collection.GrossSale;

            db.TblPOSMasters.Add(master);
            db.SaveChanges();
        
        else
        
            return Json(collection);

        
        return Json(collection);

    

我该怎么办?我的 html 按钮工作正常但仍然无法调用 api

【问题讨论】:

您是故意省略了 URL 还是试图发布到 " url: "\Controllers\POSController.cs\SaveData"? 网址好像不对,应该是 \Controllers\POS\SaveData 吗?我建议使用 MVC 助手来获取 url。 尝试在你的ajax调用中使用url: '@Url.Action("SaveData", "POS")' @JamieD77 兄弟它不工作,我也试过 \Contollers\POS\SaveData 它也不工作 url 应该是 ControllerName\ActionName 所以这里:POS\SaveData 【参考方案1】:

我认为你应该在你的 URL 中使用正斜杠 (/)

【讨论】:

以上是关于如何在 MVC 控制器中通过 WebApi 从 HTML 页面发布数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Steam WebAPI 中通过 AppName 获取 Steam AppID

在 ASP.NET MVC 中通过 JQuery AJAX 上传文件

如何在 Asp.net MVC 中添加 Web Api,然后在同一个应用程序中使用 WebAPI

如何在 Mvc Core3 中通过 UserManager 获取具有一个角色的所有用户?

asp.net 如何变成 MVC 或 WebApi?

如何在 ASP.NET MVC 中通过 Ajax 提交表单?