将数据控制器传递给viewmodel进行查看时感到困惑

时间:2018-05-28 15:09:54

标签: c# asp.net-mvc entity-framework

我现在已经两年没有做任何MVC,所以我觉得我现在非常生疏。我使用下面的代码在我的页面上显示一个简单的数据列表,但是我收到了错误

  

foreach语句无法对“Models.UsersViewModel”类型的变量进行操作,因为“.Models.UsersViewModel”不包含“GetEnumerator”的公共定义

我确定我只是错过了一些非常愚蠢的东西,但正如我所说,我只是把我的脚浸回池塘里。

有任何洞察力。

Business.User

    public Decimal USER_ID { get; set; }
    public String USERNAME { get; set; }
    public String SURNAME { get; set; }
    public String GIVENNAME { get; set; }

    public static List<User> GetList()
    {
        Entities ctx = new Entities();

        List<User> a = (from x in ctx.TABLE1
                        select new User()
                        {
                            USER_ID = x.USER_ID,
                            USERNAME = x.USERNAME,
                            SURNAME = x.SURNAME,
                            GIVENNAME = x.GIVENNAME
                        }).OrderBy(o => o.SURNAME).ToList();
        return a;
    }

控制器

        public ActionResult Index()
    {
        ViewBag.EnvPath = CurrentENV;

        var usersViewModel = new UsersViewModel();
        usersViewModel._Users = Business.User.GetList();

        return View(usersViewModel);
    }

视图模型

public class UsersViewModel
{
    public List<Business.User> _Users { get; set; }
}

查看

    @model ProactiveDisclosure.Models.UsersViewModel

    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>Index</h2>

    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table class="table">
        <tr>
            <th></th>
        </tr>

    @foreach (var item in Model) {

    }

    </table>

2 个答案:

答案 0 :(得分:1)

UsersViewModel 包含 Business.User列表。它不是Business.User本身的列表。

将迭代更改为@foreach(var user in Model._Users)

答案 1 :(得分:0)

嗯,奇怪的是,它在我关闭我的Index.cshtml并使用Model._Users重新打开时开始工作