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"オブジェクトを取ります。 "ムービー" モデルは "名前" "俳優" のプロパティを取得している理由を理解することができません

ActionMethod, Movie Model Screenshot

Debugger Screeshot:

答えて

1

ムービーオブジェクトでアクターオブジェクトを作成する方法を修正する必要があります。

enter image description here

しかし、あなたのケースのアクターに1つだけのオブジェクトです:

俳優、デバッグ時にオブジェクトのJSの配列とムービーオブジェクトは以下のようになりますする必要があります。それが役に立てば幸い。

+0

私は同じ疑念を持っていました。私に試してみましょう –

+0

@RohinTak確かに、それがうまくいけば答えとしてマークすることを忘れないでください。ありがとう。 – User3250

+0

ありがとう、私の選択した入力をmultiselectに変更し、オブジェクトの配列を取得しました。 この問題を解決しましたが、他の問題も私を待っていました。 –

関連する問題