Ich bin neu in Angular und Entity-Framework. Hier ist der Code von meinem AngularJS Controller:"Film" Model nehmen "Name" Eigenschaft des internen Objekts "Actors"
$scope.add = function() {
$scope.loading = true;
alert(this.newMovie.Name);
debugger;
$http.post('api/Movie/', this.newMovie).then(function onSuccess(response) {
alert("Added Successfully!!");
debugger;
$scope.showAddMovieForm = false;
$scope.movies.push(response);
$scope.loading = false;
}).catch(function (response) {
$scope.error = "An Error has occured while adding movie! :(" + response.data;
$scope.loading = false;
});
};
Hier ist, wie die Action-Methode in meinem MovieController in MVC aussieht:
public HttpResponseMessage Post(Movie movie)
{
if (ModelState.IsValid)
{
// _db.People.Where(na => movie.Actors.Any(a => a.PersonId == na.PersonId));
_db.Movies.Add(movie);
_db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, movie);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { movieId = movie.MovieId }));
return response;
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
Filmmodell Klasse:
public partial class Movie
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Movie()
{
this.Actors = new HashSet<Person>();
}
public int MovieId { get; set; }
public string Name { get; set; }
public Nullable<short> YearOfRelease { get; set; }
public string Plot { get; set; }
public byte[] Poster { get; set; }
public Nullable<int> ProducerId { get; set; }
public virtual Person Producer { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Person> Actors { get; set; }
}
Als ich Setzen Sie einen Debugger in den JS-Code Ich kann sehen, dass Angular das Objekt im richtigen Format übergibt.
Aber irgendwie, wenn es Aktion erreicht, nimmt das "Film" -Modell "Name" Eigenschaftswert "Schauspieler" -Objekt, das Teil von "Film" ist.
Nicht in der Lage zu verstehen, warum "Movie" Modell der "Name" Eigenschaft "Schauspieler" erhält.
Ich sehe, ich hatte die gleichen Zweifel. Lassen Sie mich versuchen –
@RohinTak Sicher, vergessen Sie nicht, als Antwort zu markieren, wenn es funktioniert hat. Vielen Dank. – User3250
Vielen Dank, änderte meine Select-Eingabe in Multiselect und jetzt Array von Objekten zu bekommen. Dieses Problem wurde gelöst, andere Probleme warten jedoch bereits im Voraus auf mich. –