[英]Displaying objects returned by controller in view in C# MVC
I'm a beginner in C# MVC, but I'm working on some project.我是 C# MVC 的初学者,但我正在做一些项目。
I've searched through Internet and found no solution matching my question.我在互联网上搜索过,没有找到与我的问题相匹配的解决方案。 None of the answears solved my problem.所有的回答都没有解决我的问题。 The problem is: how to loop through every project (as you will see in code fragments below) and display them in view.问题是:如何遍历每个项目(正如您将在下面的代码片段中看到的)并在视图中显示它们。
Project model code:项目型号代码:
public class AddProjectViewModel
{
[Required]
[StringLength(50, ErrorMessage = "Project name length is too long. Maximum lenght is 50 char.")]
public string ProjectName { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Description length is too long. Maximum lenght is 50 char.")]
public string Description { get; set; }
}
Project controller code:项目控制器代码:
public ActionResult Index()
{
var loggedUser = _workContext.GetUserId();
var userProjects = _userProjectsRepository.GetAllEntity().Where(x => x.UserId == loggedUser);
var model = new Models.ProjectViewModels.ShowUserProjectsViewModel();
model.Projects = userProjects;
return View(model);
}
The idea is: when the page loads up, display every project that logged user can see.这个想法是:当页面加载时,显示登录用户可以看到的每个项目。
I've tried something like this, but it doesn't work:我试过这样的事情,但它不起作用:
@model IEnumerable<CarPooling.Website.Models.ProjectViewModels>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var item in Model)
{
<div>
<p>@Html.DisplayFor(m=>item)</p>
</div>
}
Please, be patient with me and thanks for every response.请耐心等待我,并感谢您的每一个回复。
In your controller you are passing to your View a ShowUserProjectsViewModel
object, but then you declare your model as IEnumerable<CarPooling.Website.Models.ProjectViewModels>
inside your .cshtml View.在您的控制器中,您将ShowUserProjectsViewModel
对象传递给您的视图,但随后您在 .cshtml 视图IEnumerable<CarPooling.Website.Models.ProjectViewModels>
模型声明为IEnumerable<CarPooling.Website.Models.ProjectViewModels>
。
Use the same model type you passed inside your controller, and also remember to use the same properties defined in your ViewModel classes, as shown below:使用您在控制器中传递的相同模型类型,并记住使用在您的 ViewModel 类中定义的相同属性,如下所示:
@model ShowUserProjectsViewModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var item in Model.Projects)
{
<div>
<p>@Html.DisplayFor(m=>item.ProjectName)</p>
</div>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.