根据模型ID填充子模型

时间:2014-04-11 08:47:14

标签: c# asp.net-mvc asp.net-mvc-3

首先抱歉,如果我的头衔难以理解。我还在学习,请原谅。我搜索了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();
        }
    }

其中包含构造函数,其中包含空的帖子,但我无法弄清楚如何使用数据填充它,现在如果我遍历我的CategoryModel列出类别,并在我的视图中如果我计算(@ Model.Posts) .Count())它总是返回0.任何想法?请详细说明答案。

很抱歉,如果它是重复的。我试过搜索,但没有发现任何相似之处。

2 个答案:

答案 0 :(得分:0)

您必须创建一个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);
}

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

答案 1 :(得分:0)

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



    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的无休止的looo couse,调用了CategoryModel,而CategoryModel正在调用PostModel。所以我给出了第二个参数“深度”。在这里。 Count就像魅力一样,模型已经填充。



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

它正在运作,但它是否正确?