根据模型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。有什么想法吗?请详细回答。
如果是重复的,很抱歉。我试着搜索,但没有发现类似的东西。
您必须创建一个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
};
}
}
它起作用了,但它正确吗?