简体   繁体   English

在 C# MVC 视图中显示控制器返回的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM