2015-11-25 49 views
0

'IEnumerable'不包含'ClubName'的定义,并且没有找到接受类型为'IEnumerable'的第一个参数的扩展方法'ClubName'(您是否缺少using指令或装配参考?)缺少使用指令或程序集引用MVC

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

这是从我的家庭控制器代码

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'不合ntain为“ClubName”,没有扩展方法“ClubName”接受式“的IEnumerable”的第一个参数的定义可以找到(是否缺少using指令或程序集引用”

回答

1

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

+0

我添加了一个foreach,它运行良好,感谢您的帮助! –

1

看看你的观点:

@model IEnumerable<ultimateorganiser.Models.Club>

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

然后,尝试在你的模型访问属性:

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

你的模型是IEnumerable,而不是一个Club。您需要遍历模型。

相关问题