【问题标题】:Missing a using directive or an assembly reference MVC缺少 using 指令或程序集引用 MVC
【发布时间】:2016-02-28 20:56:20
【问题描述】:

“IEnumerable”不包含“ClubName”的定义,并且找不到接受“IEnumerable”类型的第一个参数的扩展方法“ClubName”(您是否缺少 using 指令或程序集引用?)

这是我每次尝试运行代码时遇到的错误。

这是来自我的家庭控制器的代码

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using ultimateorganiser.Models;
using ultimateorganiser.ViewModels;
using System.Data;

namespace ultimateorganiser.Controllers
{
    public class HomeController : Controller
    {
        public UltimateDb db = new UltimateDb();
        ClubViewModels cvm = new ClubViewModels();
        MemberViewModels mvm = new MemberViewModels();

        //Home Page
        public ActionResult Index()
        {
            cvm.Clubs = db.Clubs.Include("clubmembers").ToList();
            cvm.NumberofClubs = cvm.Clubs.Count();
            cvm.MemberCount = 0;
            cvm.Clubs.ForEach(clb => cvm.MemberCount += clb.ClubMembers.Count());
            ViewBag.title = "Clubs List (" + cvm.NumberofClubs + ")";
            return View(cvm.Clubs);
        }

这是视图模型(ClubViewModels)

using ultimateorganiser.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


namespace ultimateorganiser.ViewModels
{
    public class ClubViewModels
    {
        public int NumberofClubs { get; set; }
        public List<Club> Clubs { get; set; }
        public int MemberCount { get; set; }
    }
}

这是我的观点

@model IEnumerable<ultimateorganiser.Models.Club>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<div>
    <h4>Club</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.ClubName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.ClubName)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.ClubDescription)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.ClubDescription)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.ClubImage)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.ClubImage)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.ClubID }) |
    @Html.ActionLink("Back to List", "Index")
</p>

当我在浏览器上运行它时,它告诉我这是一个“编译错误”, “‘IEnumerable’不包含‘ClubName’的定义,并且找不到接受‘IEnumerable’类型的第一个参数的扩展方法‘ClubName’(您是否缺少 using 指令或程序集引用”

【问题讨论】:

    标签: c# model-view-controller


    【解决方案1】:

    你的问题是这个。您视图中的 @model 是可枚举的,但您正在像俱乐部一样使用它。 Ienumerable 是一个列表,因此,您需要逐项浏览列表才能访问俱乐部名称等属性。因此,如果您有多个俱乐部,请在视图中使用@foreach;如果您只有一个,请删除@model 中的 ienumerable。

    【讨论】:

    • 我添加了一个foreach,它运行良好,感谢您的帮助!
    【解决方案2】:

    看看你的看法:

    @model IEnumerable&lt;ultimateorganiser.Models.Club&gt;

    您是说模型应该是IEnumerable&lt;Club&gt;

    然后,您尝试访问模型上的属性:

    @Html.DisplayNameFor(model =&gt; model.ClubName)

    您的模型是IEnumerable,而不是Club。您需要迭代模型。

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多