如何从Web Api控制器返回数据?

时间:2017-01-12 08:03:55

标签: angularjs json asp.net-web-api2

您好我正在开发restfull web api应用程序。在将数据插入数据库之后,我希望返回0表示成功,1表示错误,数据作为分配给用户的唯一ID。我想以json格式返回上面的数据。我的要求是我必须以json格式向控制器发送数据并以json格式接收数据。我有以下代码,它正在工作,但我想在这里问几点。 下面是我的User_Creation控制器代码。

public result Post(Noor_Users users)
        {
            result obj = new result();
              if (ModelState.IsValid)
                {
                    entityObject.Noor_Users.Add(users);
                    int result = entityObject.SaveChanges();
                    if(result==1)
                    {
                        obj.success = 0;
                        obj.id = 5;
                        return obj;
                    }
                    else
                    {
                        obj.error = 1;
                        return obj;
                    }
                }
                else
                {
                    obj.error = 1;
                    return obj;
                }
            }
}

我的service.js文件包含以下代码。

app.service("UserCreation", function ($http) {
    this.saveSubscriber = function (sub) {
        return $http({
            method: 'post',
            data: JSON.stringify(sub),
            url: 'api/User_Creation',
            contentType: "application/json"
        });
    }
});

这是我的controller.js代码。

app.controller('UserCreation', function ($scope, UserCreation) {

    $scope.saveSubs = function () {
        var sub = {
            user_email: $scope.user_email,
            user_password: $scope.user_password,
        };
        var saveSubs = UserCreation.saveSubscriber(sub);
        saveSubs.then(function (data) {
            alert(JSON.stringify(data.data));
        }, function (error) {
            console.log('Oops! Something went wrong while saving the data.')
        })
    };
});

我期待json格式的响应如下。

●status - 0表示成功,1表示失败。 ●数据     ○id - 分配给用户的唯一ID ●错误 - 失败时出现错误消息

这绝对没问题。我在webapiconfig.cs文件中有以下代码行

config.Formatters.JsonFormatter.SupportedMediaTypes
    .Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));

使用这行代码总是可以接收json格式的数据。但是在angularjs成功调用中,我需要对收到的数据进行字符串化。如果我的所有数据都在json中返回,那么为什么我应该将它转换为json?也有人可以告诉我上面的逻辑是一个返回数据的好习惯吗?谢谢。

1 个答案:

答案 0 :(得分:0)

请尝试以下步骤:

  1. 在WebApiConfig.cs

    之上添加这两行代码
    public static void Register(HttpConfiguration config)
    {
         config.Formatters.Clear();
         config.Formatters.Add(new JsonMediaTypeFormatter());
    
  2. 使用以下

    编辑控制器操作
    public IHttpActionResult Post(Noor_Users users)
    {
        result obj = new result();
        if (ModelState.IsValid)
        {
            entityObject.Noor_Users.Add(users);
            int result = entityObject.SaveChanges();
            if (result == 1)
            {
                obj.success = 0;
                obj.id = 5;
            }
            else
            {
                obj.error = 1;
            }
        }
        else
        {
            obj.error = 1;
        }
    
        return Ok(obj);
    }