AngularJS使用$ resource将数据发布到WebAPI

时间:2017-08-28 21:30:29

标签: c# jquery angularjs asp.net-web-api asp.net-apicontroller

好的,我相信我已经接近了这个工作但似乎无法识别我的WebAPI控制器,除非我在URI中传递参数。

我有...... 像这样使用$ resource的Angular ......

for (n in branches_numbers.values()) {
buildNum = n.toString()
step([$class: 'CopyArtifact',
    filter: 'Tests_Outputs/*.log', 
    fingerprintArtifacts: true, 
    flatten: true, 
    projectName: childJobName, 
    selector: [$class: 'SpecificBuildSelector', 
       buildNumber: buildNum], 
    target: '.']);
}

收集网址并传递此数据并调用WebAPI的服务......

SaveData:$ resource(myURL,{})

WebAPI控制器......

 var savePromise = myService.common.SaveData.save({},{ ID: saveObj.ID, Year: saveObj.Year, typeID: saveObj.TypeID, ObjectList: JSON.stringify(saveCollection) }).$promise;

如果我没有在查询字符串中传递值,则无法找到ApiController。

任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:0)

好的,我已经成功使用POST在AngularJS中发送数据......以下我是怎么做到的......

取了我传递的参数并将它们放在javascript对象中......

 var objData = {
                    Var1: Var1Value,
                    Var2: Var2Value,
                    Var3: Var3Value,
                    Var4: Var4Value 
                }

将该对象传递给"保存"请求...

var savePromise = myService.common.SavePostData.save({}, objData).$promise;

我在构建呼叫并执行的服务中拥有我的资源...... (function(angular,undefined){     '使用严格的';

angular.module('mynamespace.myservice', [
    // Angular
    'ngResource'
])
.factory('myservice', ['$resource', function ($resource) {
        return {
            common: {
            SavePostData: $resource(myURL, {})
            }
        };
    }]);

}(角));

<强> OKAY !!现在最重要的部分!!! 在WebApi方面,您必须为POST创建数据模型以映射到... 〜注意&#34;案例&#34;变量必须匹配!

using System.Collections.ObjectModel;
namespace myNamespace {

public class DataModelThatMatchesRequest {
    public int Var1 {
        get;
        set;
    }

    public int Var2 {
        get;
        set;
    }
    public int Var3 {
        get;
        set;
    }

    public Var4  {
        get;
        set;
    }

}

}

现在创建一个使用您的数据模型的ApiController ...... 〜注意你必须有装饰&#34; [HttpPost]&#34;和行动装饰&#34; [FromBody]&#34;

    public class SaveObjectController : ApiController {

    [HttpPost]        
    public Objects POST([FromBody] DataModelThatMatchesRequest saveRequest) 
    {

    Do some stuff with "saveRequest"

    }

我希望这可以帮助你!!