' IEnumerable的'不包含' ClubName'的定义并且没有任何扩展方法' ClubName'接受类型' IEnumerable'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
这是我每次尝试运行代码时遇到的错误。
这是我的家庭控制器的代码
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>
当我在浏览器上运行时,它告诉我它是&#34;编译错误&#34;, &#34; &#39; IEnumerable的&#39;不包含&#39; ClubName&#39;的定义并且没有任何扩展方法&#39; ClubName&#39;接受类型&#39; IEnumerable&#39;的第一个参数。可以找到(你是否错过了使用指令或汇编参考&#34;
答案 0 :(得分:1)
看看你的观点:
@model IEnumerable<ultimateorganiser.Models.Club>
你说模型应该是IEnumerable<Club>
。
然后,您尝试访问模型上的属性:
@Html.DisplayNameFor(model => model.ClubName)
您的模型是IEnumerable
,而不是Club
。你需要迭代模型。
答案 1 :(得分:1)
你的问题就是这个。你视图中的@model是一个不可数的,但你像俱乐部一样使用它。 Ienumerable是一个列表,因此,您需要逐项浏览列表才能访问俱乐部名称等属性。因此,如果您有多个俱乐部,请在视图中使用@foreach,或者如果您只有一个俱乐部,请在@model中删除无数字。