Carlos Jimenez Bermudez
Carlos Jimenez Bermudez

Reputation: 1175

AngularJS with .net core model not binding

So I have been learning some .net core and I am building an API with it. Normally I would work with angular and send requests there.

I have the following angular snippet:

//The data I need to send.
$scope.PersonalInfo = {
    firstName: '',
    lastName: '',
    companyName: '',
    email: '',
    password: '',
    confirmPassword: '',
    imageLink: ''
};

Then there's the backend model for the same data:

public class UserProfileModel
{

    public string userID { get; set; }

    public string firstName { get; set; }

    public string lastName { get; set; }

    public string companyName { get; set; }

    public string email { get; set; }

    public string password { get; set; }

    public string confirmPassword { get; set; }

    public string imageLink { get; set; }
}

And finally the method that should send it:

$scope.UpdateProfile = function () {

    var profile = JSON.stringify($scope.PersonalInfo);

    $http.post('/api/Profile/Users', profile).then(function (response) {
        debugger;
        $log.log(profile);
        $log.log(response);
    });
};

No matter how many changes I have done, (send the data as a stringified JSON, or send the scoped object), when the request hits the controller, I end up with this:

Model not being bound...

$scope.PersonalInfo is full of data before the request is sent.

Any help is very appreciated. Thanks in advance.

Upvotes: 1

Views: 1003

Answers (1)

Muqeet Khan
Muqeet Khan

Reputation: 2114

You need to mention [FromBody] attribute in your post call. Like So,

    [HttpPost]
    [Route("api/bar/users")]
    public IActionResult Users([FromBody]UserProfileViewModel profile)
    {

        return Json(new { Data = profile });
    }

That should do it.

The necessity to use the FromBody attribute is so that the framework can use the correct input formatter to model bind. The default formatter used, for example, with content type application/json is the JSON formatter based on Json.Net

Detailed information at: https://learn.microsoft.com/en-us/aspnet/core/mvc/models/model-binding

Upvotes: 5

Related Questions