根据模型id填充子模型

本文关键字:模型 填充 id | 更新日期: 2023-09-27 17:57:49

首先,如果我的标题无法理解,我感到抱歉。我还在学习,所以请原谅我。我搜索了StackOverflow,但没有发现任何可以解决问题的内容。所以…我正在自学MVC和C#,我决定创建一个小型博客应用程序。我使用的是N-Tier架构,它包含Blog.Back(管理面板前端的东西和控制器,它们使用来自Logic的ModelProviders来操作数据),Blog.DAL,它包含EDMX,Blog.Logic,它包含Models和ModelProviders。我有这个型号:


    public class CategoryModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List Posts { get; set; }
        public CategoryModel()
        {
            Posts = new List();
        }
    }

它包含初始化空Posts的构造函数,但我不知道如何用数据填充它,目前,如果我循环遍历我的CategoryModel以列出Categories,并且在我的视图中,如果我计数(@Model.Posts.count()),它总是返回0。有什么想法吗?请详细回答。

如果是重复的,很抱歉。我试着搜索,但没有发现类似的东西。

根据模型id填充子模型

您必须创建一个CategoryModel对象并用一些数据填充它,例如:

var model = new CategoryModel
{
    Id = 1,
    Name = "Some Name",
    Posts = new List<Post>
    {
        new Post() {
            SomeProperty = "Some Property"
        },
        new Post() {
            SomeProperty = "Some Property"
        }
    }
};

然后你可以使用以下代码循环它的Posts属性:

foreach (var post in model.Posts)
{
    Console.WriteLine("Property: ", post.SomeProperty);
}

也许这不是一个完美的例子,但我希望它能对你有所帮助。

实际上,我应该用一种方法填充模型,将基本模型映射到我的模型,对我来说是:


    public static CategoryModel From(Category data, bool deep = false)
    {
            return new CategoryModel()
            {
                Id = data.Id,
                Name = data.Name,
                Posts = data.Posts.Select(p => PostModel.From(p)).ToList()
            };
    }

但我陷入了无尽的PostModel调用CategoryModel和CategoryModel调用PostModel的喧嚣中。所以我给出了第二个参数"深度"。它就在这里。伯爵像一个魅力人物一样工作,模特也被填满了。


    public static CategoryModel From(Category data, bool deep = false)
    {
        if (deep)
        {
            return new CategoryModel()
            {
                Id = data.Id,
                Name = data.Name,
                Posts = data.Posts.Select(p => PostModel.From(p)).ToList()
            };
        }
        else
        {
            return new CategoryModel()
            {
                Id = data.Id,
                Name = data.Name
            };
        }
    }

它起作用了,但它正确吗?