【问题标题】:Confused about passing data controller to viewmodel to view对将数据控制器传递给视图模型以查看感到困惑
【发布时间】:2018-05-28 15:09:54
【问题描述】:

我已经有 2 年没有做过任何 MVC 了,所以我觉得我现在很生疏。我使用下面的代码在我的页面上显示来自我的数据库的简单数据列表,但我收到错误

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

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

感谢任何见解。

企业用户

    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>

【问题讨论】:

  • @foreach (var item in Model._Users) {
  • 不应该是Model._Users吗?
  • 我也是这么想的,但是 foreach 说“IEnumerable”不包含“_Users”的定义,并且没有扩展方法“_Users”接受“IEnumerable”类型的第一个参数UsersViewModel>' 当我添加 Model._Users

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


【解决方案1】:

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

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

【讨论】:

  • 我也是这么想的,但是 foreach 说“IEnumerable”不包含“_Users”的定义,并且没有扩展方法“_Users”接受“IEnumerable”类型的第一个参数UsersViewModel>' 当我添加 Model._Users
  • 你能发布你现在使用的实际代码吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多