2017-07-11 9 views
0

1対多の関係を持つ2つのクラスがあります。ASP.NET MVCビューでコントローラオブジェクトに1対多リレーションシップの子オブジェクトが返されない

public class Article 
{ 
    [Key] 
    public virtual int Id { get; set; } 
    public virtual string Title { get; set; } 
    public virtual int SortOrder { get; set; } 
    public virtual ArticleList ArticleList{ get; set; } 
} 

public class ArticleList 
{ 
    public ArticleList() 
    { 
     Articles = new List<Article>(); 
    } 

    [Key] 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 

    public virtual ICollection<Article> Articles { get; set; } 
} 

これはコントローラの動作です。ここでArticleListに関連するすべての記事が正しく読み込まれます。

 public ActionResult EditArticleList(int id) 
    { 
     ArticleList articleList = unitOfWork.ArticleListRepository.GetById(id); 

     return View(articleList); 
    } 

これはコントローラのポストアクションです。ビューがデータを返すとき、ArticleListに関連する記事は、ArticleListオブジェクト内にとして返されません。

public ActionResult EditArticleList(ArticleList articleList) 
{ 

} 

これは対応するビューです。ビューコントローラのポストアクションにArticleListに関連する記事を返さない理由

@model Domain.Entities.ArticleList 

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>EditArticleList</title> 

</head> 
<body> 
    @using (Html.BeginForm()) 
    { 
     @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>ArticleList</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     @Html.HiddenFor(model => model.Id) 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     @foreach (var p in Model.Articles) 
     { 
      <div> 
       <h3>@p.Title</h3> 
       <h4>@p.Created</h4> 

       @Html.ActionLink(p.Title, "Edit", "AdminArticle", new { id = p.Id }, null) 

      </div> 
     } 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Save" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 

    <div class="form-horizonthal"> 
     <div class="form-group"> 

      <input type="button" class="btn btn-default" id="btnsubmit" value="get Value" /> 
     </div> 
    </div> 
} 

問題がありますか?

答えて

0

これらは返されません。ビューから返される唯一のデータは、フォームの一部としてポストされたデータです。あなたのフォームには、IDと名前の入力があります。これは投稿されたものです。

実際、これらの関連記事は掲載してはいけません。ウェブページをすべてのオブジェクトと州のコンテナとして使用しないでください。あなたはそのためのデータベースを持っています。だから正しいアプローチは、あなたのポストアクションで関連する記事を再度読み込むことです。

関連する問題