1
AngularおよびEntityフレームワークの新機能です。ここ は私AngularJSコントローラからのコードです:ここでは"Movie"内部オブジェクト "Actors"の "Name"プロパティを取得するモデル
$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;
});
};
は対処方法がMVCで私のMovieControllerにどのように見えるかです:
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);
}
}
作品モデルクラス:
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; }
}
I JSコードにデバッガを置くAngularが正しい形式でオブジェクトを渡していることが分かります。
しかし、何らかの形でActionに到達すると、 "Movie"モデルは "Movie"自体の一部である "Name"プロパティ値 "Actors"オブジェクトを取ります。 "ムービー" モデルは "名前" "俳優" のプロパティを取得している理由を理解することができません
。
私は同じ疑念を持っていました。私に試してみましょう –
@RohinTak確かに、それがうまくいけば答えとしてマークすることを忘れないでください。ありがとう。 – User3250
ありがとう、私の選択した入力をmultiselectに変更し、オブジェクトの配列を取得しました。 この問題を解決しましたが、他の問題も私を待っていました。 –