缺少using指令或程序集引用MVC

本文关键字:引用 MVC 程序集 using 指令 缺少 | 更新日期: 2023-09-27 18:24:41

'Enumerable'不包含'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; }
    }
}

这是我的View

@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'的定义,也找不到接受'IEnumarable'类型的第一个参数的扩展方法'ClubName](是否缺少using指令或程序集引用)"

缺少using指令或程序集引用MVC

您的问题是这个。在你看来,@模型是一个数字,但你像俱乐部一样使用它。Ienumerable是一个列表,所以你需要逐项查看列表,才能访问俱乐部名称等属性。因此,如果你有多个球杆,可以在视图中使用@foreach,如果你只有一个球杆,则可以去掉@模型中的ienumerable。

查看您的视图:

@model IEnumerable<ultimateorganiser.Models.Club>

你是说模型应该是IEnumerable<Club>

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

@Html.DisplayNameFor(model => model.ClubName)

您的型号是IEnumerable,而不是Club。您需要对模型进行迭代。

"嗨,如果你想使用IEnumerable,那么添加"

@model IEnumerable<ultimateorganiser.Models.Club>
<div>
<h4>Club</h4>
<hr />
<dl class="dl-horizontal">
    @foreach (var item in Model)
    {
        <dt>
        @Html.DisplayNameFor(model => item.ClubName)
    </dt>
    <dd>
        @Html.DisplayFor(model => item.ClubName)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => item.ClubDescription)
    </dt>
    <dd>
        @Html.DisplayFor(model => item.ClubDescription)
    </dd>
    <dt>
        @Html.DisplayNameFor(model => item.ClubImage)
    </dt>
    <dd>
        @Html.DisplayFor(model => item.ClubImage)
    </dd>
    }
    
</dl>

";如果你想访问模型使用"

@model ultimateorganiser.Models.Club
<form asp-action="Create">
    <div class="form-group">
        <label asp-for="ClubName" class="control-label"></label>
        <input asp-for="ClubName" class="form-control" />
        <span asp-validation-for="ClubName" class="text-danger"></span>
    </div>
 </form>