【问题标题】:pass var to IEnumerable view将 var 传递给 IEnumerable 视图
【发布时间】:2014-05-28 18:07:28
【问题描述】:

这是我的控制器:

    [HttpPost]
    public ActionResult RegisterUser(User user)
    {
        var users = new User(user);
        Context.Users.Insert(user);
        return RedirectToAction("RegisterdUsers");
    }

    public ActionResult RegisterdUsers()
    {
        var users = Context.Users.FindAll();
        return View(users); 
    }

这是我的观点:

@model IEnumerable<SportsFantasy_2._0.Models.User>
@{
ViewBag.Title = "RegisterdUsers";
}

<h2>RegisterdUsers</h2>
<table>  
<tr>
    <th>
        @Html.DisplayNameFor(m => m.username)
    </th>
</tr>

如您所见,我将用户发送到我的视图,并且我想使用 IEnumerable 来遍历用户。但是当我尝试使用模型 m=> m.username 时它找不到用户名? 我做错了什么?

【问题讨论】:

    标签: c# asp.net-mvc razor ienumerable


    【解决方案1】:

    m 代表您的Model。您的模型是 IEnumerable&lt;SportsFantasy_2._0.Models.User&gt;,它没有 username 属性。如果要显示所有用户,请使用循环。

    【讨论】:

    • 复数视觉教程我看着他这样做并以某种方式在他的模型中找到所有内容
    • Selman22 是对的。您一定错过了教程中的某些内容。检查是否没有 foreach,或者对 DisplayNameFor(...) 的调用是否在显示模板或编辑器模板中。
    【解决方案2】:

    您必须进行迭代,因为它是某种类型的 IEnumerable,而不是简单类型:

    @foreach(var item in Model)
    {
     <th>
            @Html.DisplayNameFor(m => item.username)
        </th>
    }
    

    【讨论】:

    • 我正在观看有关复数视觉的教程,但他们不在那里进行 foreach 循环。无论如何,我尝试了 foreach,但是当我尝试构建 @Html.DisplayNameFor(m => item.UserName) 时,我收到此错误“错误 2 以下方法或属性之间的调用不明确:”然后它显示了很多扩展
    • IEnumerable 用于当有多个对象时,如果预期单个对象,那么它应该是简单模型
    • 所以如果我发送一个包含多个对象的对象,我不应该使用 IEnumerable?
    • 是的,那么您的内部对象将是 iE​​numerable 但视图绑定模型将是单个对象
    • 但是在接下来的教程中,他们使用了 IEnumerable。如果我想使用它,我该如何使用它?可以说我有多个对象。在那种情况下,我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多