从Angular到MVC控制器的POST值导致null值

时间:2016-10-27 05:07:56

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

我试图将一个值从angular传递给我的MVC Core控制器,以便在存储库函数中用作简单的字符串。但是,我注意到它将空值传递给MVC控制器。我不想创建一个MVC模型只是为了将POSTed JSON用作字符串。

MVC控制器的功能摘录

[HttpPost("api/specials/GetCurrentSpecialsBySiteID")]
public ActionResult GetCurrentSpecials([FromBody] string siteID)
{
    return Ok(_repo.GetAllSpecialsBySiteID(siteID));
}

$ Http Angular function

$http({
        method: 'POST',
        url: '/api/specials/GetCurrentSpecialsBySiteID',
        data: siteID,
        headers: { 'Content-Type': 'application/json;charset=UTF-8' }
        })
        .then(function (response) {
            // success
            console.log(response);
            vm.Specials.push(response.data);
            angular.copy(response.data, vm.Specials);
            console.log(vm.Specials);
            // clear the form 
            vm.newSpecials = {};
        }, function (response) {
           // failure
            console.log("Error !" + response.data);
            vm.errorMessage = "Failed to save subscription";
        })
        .finally(function () {
            vm.isBusy = false;
        });

3 个答案:

答案 0 :(得分:0)

在mvc控制器中,您将action参数作为字符串传递。 请检查你" siteID"输入你的JS。

方法:' POST',         url:' / api / specials / GetCurrentSpecialsBySiteID',         数据: siteID ,         标题:{'内容类型':' application / json; charset = UTF-8' }         })

答案 1 :(得分:0)

从您的示例看起来您可能应该执行GET而不是POST,但是您可以按照以下方式调整方法以启动并运行:

[HttpPost("api/specials/GetCurrentSpecialsBySiteID")]
public ActionResult GetCurrentSpecials([FromUri] string siteID)
{
    return Ok(_repo.GetAllSpecialsBySiteID(siteID));
}

你的角度函数:

$http.post('/api/organisations/test?siteID=' + siteID)
     .then(function (response) {
         ...
     })
     .finally(function () {
         ...
     });

答案 2 :(得分:0)

尝试在$ Http Angular函数中传递对象。

$http({
        method: 'POST',
        url: '/api/specials/GetCurrentSpecialsBySiteID',
        data: {siteID: siteID},
        headers: { 'Content-Type': 'application/json;charset=UTF-8' }
        })
        .then....

如需更多信息,请查看$ http服务文档here