遍历 C# MVC 中的列表并访问属性
Iterate through a list in C# MVC and access properties
我创建了一个接受 ProjectsCreatorsVM 的视图 class。 class 的结构如下:
public class ProjectsCreatorsVM
{
public List<ProjectVM> ProjectsCreators { get; set; }
public ProjectsCreatorsVM(List<ProjectVM> projectsCreators)
{
ProjectsCreators = projectsCreators;
}
}
此外,ProjectVM 遵循以下结构:
public class ProjectVM
{
public Project Project { get; set; }
public ApplicationUser ApplicationUser { get; set; }
public ProjectVM(Project pro, ApplicationUser applUser)
{
Project = pro;
ApplicationUser = applUser;
}
}
最后,我的观点试图通过ProjectsCreators.Project,但似乎不可能。
<div class="card-content-container" >
@foreach (Project obj in @Model.ProjectsCreators.)
{
<div class="card">
<img class="card-img-top" src="@obj.ImgURL" alt ="project image" >
<div class="card-body d-flex flex-column">
<h5 class="card-title">@obj.Title</h5>
<h6 class="card-title">@obj.Title</h6>
<p class="card-text">
@obj.TruncatedDescription
</p>
<div class="mt-auto" style="display: flex; justify-content: space-between; align-items: center;">
<a href="/Customer/ProjectVisitor/ViewProjectDetail?id=@obj.Id" class="btn btn-primary">View Details</a>
</div>
</div>
</div>
如有任何帮助,我将不胜感激。提前致谢。
ProjectCreators 是一个 List 并且当你迭代 ProjectCreators 你会得到一个 ProjectVM 对象不是 Project 或 ApplicaionUser 实例。如果您想访问 Project 实例,请在 @obj 之后添加 Project,例如 @obj.Project.Title
<div class="card-content-container" >
@foreach (ProjectVM obj in @Model.ProjectsCreators.)
{
<div class="card">
<img class="card-img-top" src="@obj.Project.ImgURL" alt ="project image" >
<div class="card-body d-flex flex-column">
<h5 class="card-title">@obj.Project.Title</h5>
<h6 class="card-title">@obj.Project.Title</h6>
<p class="card-text">
@obj.Project.TruncatedDescription
</p>
<div class="mt-auto" style="display: flex; justify-content: space-between; align-items: center;">
<a href="/Customer/ProjectVisitor/ViewProjectDetail?id=@obj.Project.Id" class="btn btn-primary">View Details</a>
</div>
</div>
</div>
}
</div>
为了实现我想要的,我创建了另一个 class。看起来像这样:
public class ProjectAndUserVM
{
public string ProjectTitle { get; set; }
public string ProjectId { get; set; }
public string ProjectImageUrl { get; set; }
public string ProjectDescription { get; set; }
public string ProjectCreatorName { get; set; }
public string ProjectCreatorId { get; set; }
public string ProjectCreatorEmail { get; set; }
public ProjectAndUserVM(string projectTitle, string projectId, string projectImageUrl, string projectDescription, string projectCreatorName, string projectCreatorId, string projectCreatorEmail)
{
ProjectTitle = projectTitle;
ProjectId = projectId;
ProjectImageUrl = projectImageUrl;
ProjectDescription = projectDescription;
ProjectCreatorName = projectCreatorName;
ProjectCreatorId = projectCreatorId;
ProjectCreatorEmail = projectCreatorEmail;
}
}
所以,基本上我的控制器将其作为列表返回,我将其转换为 IEnumerable。而我在我的视图中使用了该列表。
我创建了一个接受 ProjectsCreatorsVM 的视图 class。 class 的结构如下:
public class ProjectsCreatorsVM
{
public List<ProjectVM> ProjectsCreators { get; set; }
public ProjectsCreatorsVM(List<ProjectVM> projectsCreators)
{
ProjectsCreators = projectsCreators;
}
}
此外,ProjectVM 遵循以下结构:
public class ProjectVM
{
public Project Project { get; set; }
public ApplicationUser ApplicationUser { get; set; }
public ProjectVM(Project pro, ApplicationUser applUser)
{
Project = pro;
ApplicationUser = applUser;
}
}
最后,我的观点试图通过ProjectsCreators.Project,但似乎不可能。
<div class="card-content-container" >
@foreach (Project obj in @Model.ProjectsCreators.)
{
<div class="card">
<img class="card-img-top" src="@obj.ImgURL" alt ="project image" >
<div class="card-body d-flex flex-column">
<h5 class="card-title">@obj.Title</h5>
<h6 class="card-title">@obj.Title</h6>
<p class="card-text">
@obj.TruncatedDescription
</p>
<div class="mt-auto" style="display: flex; justify-content: space-between; align-items: center;">
<a href="/Customer/ProjectVisitor/ViewProjectDetail?id=@obj.Id" class="btn btn-primary">View Details</a>
</div>
</div>
</div>
如有任何帮助,我将不胜感激。提前致谢。
ProjectCreators 是一个 List 并且当你迭代 ProjectCreators 你会得到一个 ProjectVM 对象不是 Project 或 ApplicaionUser 实例。如果您想访问 Project 实例,请在 @obj 之后添加 Project,例如 @obj.Project.Title
<div class="card-content-container" >
@foreach (ProjectVM obj in @Model.ProjectsCreators.)
{
<div class="card">
<img class="card-img-top" src="@obj.Project.ImgURL" alt ="project image" >
<div class="card-body d-flex flex-column">
<h5 class="card-title">@obj.Project.Title</h5>
<h6 class="card-title">@obj.Project.Title</h6>
<p class="card-text">
@obj.Project.TruncatedDescription
</p>
<div class="mt-auto" style="display: flex; justify-content: space-between; align-items: center;">
<a href="/Customer/ProjectVisitor/ViewProjectDetail?id=@obj.Project.Id" class="btn btn-primary">View Details</a>
</div>
</div>
</div>
}
</div>
为了实现我想要的,我创建了另一个 class。看起来像这样:
public class ProjectAndUserVM
{
public string ProjectTitle { get; set; }
public string ProjectId { get; set; }
public string ProjectImageUrl { get; set; }
public string ProjectDescription { get; set; }
public string ProjectCreatorName { get; set; }
public string ProjectCreatorId { get; set; }
public string ProjectCreatorEmail { get; set; }
public ProjectAndUserVM(string projectTitle, string projectId, string projectImageUrl, string projectDescription, string projectCreatorName, string projectCreatorId, string projectCreatorEmail)
{
ProjectTitle = projectTitle;
ProjectId = projectId;
ProjectImageUrl = projectImageUrl;
ProjectDescription = projectDescription;
ProjectCreatorName = projectCreatorName;
ProjectCreatorId = projectCreatorId;
ProjectCreatorEmail = projectCreatorEmail;
}
}
所以,基本上我的控制器将其作为列表返回,我将其转换为 IEnumerable。而我在我的视图中使用了该列表。