C# ASP.NET:无法从视图中的视图模型显示数据

C# ASP.NET:无法从视图中的视图模型显示数据,c#,asp.net,C#,Asp.net,我刚开始使用ASP.NET,正在通过youtube和谷歌的大量教程进行培训,我可以找到这些教程 但我似乎找不到解决这个问题的办法 我的目的是在表中生成客户的表视图,并使用viewmodel将其列为c1和c2 我的viewmodel代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Alpha.Models; nam

我刚开始使用ASP.NET,正在通过youtube和谷歌的大量教程进行培训,我可以找到这些教程

但我似乎找不到解决这个问题的办法

我的目的是在表中生成客户的表视图,并使用viewmodel将其列为c1和c2

我的viewmodel代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Alpha.Models;

namespace Alpha.ViewModels
{
    public class ListCustomersViewModel
    {
        public List<Customer> Customers { get; set; }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用阿尔法模型;
名称空间Alpha.ViewModels
{
公共类ListCustomerViewModel
{
公共列表客户{get;set;}
}
}
我的控制器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Alpha.Models;
using Alpha.ViewModels;


namespace Alpha.Controllers
{
    public class CustomersController : Controller
    {
        // GET: Customers/ListCustomer
        public ActionResult ListCustomers()
        {
            var customers = new List<Customer>
            {
                new Customer { Name = "C1" , Id = 1},
                new Customer { Name = "C2" , Id = 2}
            };
            var viewModel = new ListCustomersViewModel
            {
                Customers = customers
            };
            return View(viewModel);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用阿尔法模型;
使用Alpha.ViewModels;
名称空间Alpha.Controllers
{
公共类CustomerController:控制器
{
//获取:客户/列表客户
公共行动结果列表客户()
{
var客户=新列表
{
新客户{Name=“C1”,Id=1},
新客户{Name=“C2”,Id=2}
};
var viewModel=新的ListCustomerViewModel
{
顾客=顾客
};
返回视图(viewModel);
}
}
}
我的视图代码:

@model Alpha.ViewModels.ListCustomersViewModel
@{
    ViewBag.Title = "ListCustomers";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Customers</h1>

<div class="container">
    <table class="table">
        <thread>
            <tr>
                <th>Customer</th>
            </tr>
        </thread>
        <tbody>
            <tr>
                <td>*I DONT KNOW WHAT I SHOULD TYPE HERE TO PASS THE INFORMATION IN (C1)</td>
                <td>*I DONT KNOW WHAT I SHOULD TYPE HERE TO PASS THE INFORMATION IN (C2)</td>
            </tr>
        </tbody>
    </table>
</div>
@model Alpha.ViewModels.listCustomerViewModel
@{
ViewBag.Title=“ListCustomers”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
客户
顾客
*我不知道我应该在这里键入什么来传递(C1)中的信息
*我不知道我应该在这里键入什么来传递(C2)中的信息

我真的希望有人能在这件事上给我一个指导。谢谢。

您需要在模型上循环并提取信息以构建表

<tbody>
@foreach (var item in Model.Customers)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Id)
        </td>
    </tr>
}
</tbody>

@foreach(Model.Customers中的var项)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modeleItem=>item.Id)
}

您需要在模型上循环并提取信息以构建表

<tbody>
@foreach (var item in Model.Customers)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Id)
        </td>
    </tr>
}
</tbody>

@foreach(Model.Customers中的var项)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modeleItem=>item.Id)
}

首次在视图中使用
@model IEnumerable
然后你们可以在桌子上用

  <tbody>
       @foreach (Customer cust in Model) 
       {
       <tr>
           <td>@Html.DisplayFor(modelItem => cust.Name)</td>
       </tr>
       }
  </tbody>

@foreach(模型中的客户)
{
@DisplayFor(modelItem=>cust.Name)
}

您可以了解如何使用.net

首次在视图中使用
@model IEnumerable
然后你们可以在桌子上用

  <tbody>
       @foreach (Customer cust in Model) 
       {
       <tr>
           <td>@Html.DisplayFor(modelItem => cust.Name)</td>
       </tr>
       }
  </tbody>

@foreach(模型中的客户)
{
@DisplayFor(modelItem=>cust.Name)
}

您可以了解如何使用.net

您的
视图模型
包含一个
列表
,这意味着其中包含多个实体,因此基本上没有将类传递给您的模型那么简单。要从列表中提取数据,您需要使用,正如其他人所解释的,您可以使用
foreach
来显示数据:

<tbody>
@foreach (var item in Model.Customers)
{
    <tr>
        <td>
            //one way to show the data
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            //or you can simple call the item object and declare the property you want to show
            @item.Id
        </td>
    </tr>
}
</tbody>

@foreach(Model.Customers中的var项)
{
//显示数据的一种方法
@DisplayFor(modelItem=>item.Name)
//或者,您可以简单地调用item对象并声明要显示的属性
@项目Id
}

您的
视图模型
包含一个
列表
,这意味着其中包含多个实体,因此基本上没有将类传递给模型那么简单。要从列表中提取数据,您需要使用,正如其他人所解释的,您可以使用
foreach
来显示数据:

<tbody>
@foreach (var item in Model.Customers)
{
    <tr>
        <td>
            //one way to show the data
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            //or you can simple call the item object and declare the property you want to show
            @item.Id
        </td>
    </tr>
}
</tbody>

@foreach(Model.Customers中的var项)
{
//显示数据的一种方法
@DisplayFor(modelItem=>item.Name)
//或者,您可以简单地调用item对象并声明要显示的属性
@项目Id
}

您上面发布的代码是什么?什么不起作用了?@pijemcolu问题的标题错了。OP知道如何向视图发送数据,但他不知道如何在视图中显示数据;o) @pijemcolu抱歉,我的不好还不够清楚,问题在于视图部分“*我不知道我应该在这里键入什么来在(C1)中传递信息)*我不知道我应该在这里键入什么来在(C2)中传递信息”@SirRufo感谢您的提醒,下次将以更好的标题发布=)无需感到抱歉,我只是想,如果你把问题放在最上面的某个地方,会让问题更加清晰。你可以编辑你的问题。你上面贴的代码是什么?什么不起作用了?@pijemcolu问题的标题错了。OP知道如何向视图发送数据,但他不知道如何在视图中显示数据;o) @pijemcolu抱歉,我的不好还不够清楚,问题在于视图部分“*我不知道我应该在这里键入什么来在(C1)中传递信息)*我不知道我应该在这里键入什么来在(C2)中传递信息”@SirRufo感谢您的提醒,下次将以更好的标题发布=)无需感到抱歉,我只是想,如果你把问题放在最上面的某个地方,会让问题更加清晰。您可以编辑问题。视图的模型类型为ListCustomerViewModel。但是可以为IEnumerable设置一个显示模板;o) @SirRufo是的,你是对的,但是这里不需要ListCustomerViewModel.:)你怎么知道这是不必要的?你知道整个项目吗?如果是的话,那么你可能是对的我不知道整个项目,