ASP.NET MVC 视图不 return 与控制器动作的一对多关系的子对象

ASP.NET MVC View doesn't return the Child Objects of One-To-Many Relationship to the Controller Action

我有两个 类 具有一对多关系。

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);
    }

这是控制器post的动作。这里在查看returns数据时,ArticleList相关的文章没有returned在ArticleList对象中

public ActionResult EditArticleList(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>
}

问题是为什么视图不 return 与 ArticleList 相关的文章到控制器 post 动作?

它们不应该被退回。您从视图中返回的唯一数据是作为表单的一部分 posted 的数据。在您的表单中,您输入了 Id 和 Name - 这就是 posted,没有别的。

事实上,不应 post 编辑这些相关文章,您不应将网页用作所有对象和状态的容器。你有那个数据库。因此,正确的做法是在 post 操作中再次加载相关文章。