2015-03-10 23 views
6

Görünümümde yaptığım listeyi görüntülemeye çalışıyorum ama almaya devam ediyorum: "Sözlüğe aktarılan model öğesi türündedir" System.Collections.Generic.List 1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [Puanlar. Models.Teams]'."Görünüm MVC'de görüntüle

Benim Denetleyici:

public class HomeController : Controller 
{ 
    Teams tm = new Teams(); 

    public ActionResult Index() 
    { 
     var model = tm.Name.ToList(); 

     model.Add("Manchester United"); 
     model.Add("Chelsea"); 
     model.Add("Manchester City"); 
     model.Add("Arsenal"); 
     model.Add("Liverpool"); 
     model.Add("Tottenham"); 

     return View(model); 
    } 

Benim modelim:

public class Teams 
{ 
    public int Position { get; set; } 
    public string HomeGround {get; set;} 
    public string NickName {get; set;} 
    public int Founded { get; set; } 

    public List<string> Name = new List<string>(); 
} 

Bence: Herhangi bir yardım mutluluk duyacağız

@model IEnumerable<Standings.Models.Teams> 

@{ 
ViewBag.Title = "Standings"; 
} 

@foreach (var item in Model) 
{ 
    <div> 
     @item.Name 
     <hr /> 
    </div> 
} 

:)

+0

Eğer takımlardan bir koleksiyon veya (eğer geçiyoruz ne) ekibi isim listesi geçmek istiyor musunuz modeli aşağıdaki geçmek zorunda? –

+0

Neden bir takım futbol takımı nesnesi 'Teams' (çoğul) ve neden bir takımın birden fazla ismi var? Bence size dikkatlice bakman gerekiyor! –

+0

Cevabımı aşağıdan deneyin. Modeliniz correclty uygulanmadı. –

cevap

13

eyleminizle yöntemi düşünmekte yazın List<string>. Ancak, görüşünüze göre IEnumerable<Standings.Models.Teams>'u bekliyorsunuz. Bu sorunu, görünümünüzdeki modeli List<string> olarak değiştirerek çözebilirsiniz.

Ancak, en iyi yaklaşım, eylem yönteminizden bir model olarak IEnumerable<Standings.Models.Teams> döndürmektir. Sonra görünümünüzdeki model tipini değiştiremezsiniz. Ancak, bence, modelleriniz doğru bir şekilde uygulanmamıştır. Size yanlış modu geçiyoruz

@model IEnumerable<Standings.Models.Team> 

@{ 
    ViewBag.Title = "Standings"; 
} 

@foreach (var item in Model) 
{ 
    <div> 
     @item.Name 
     <hr /> 
    </div> 
} 
+0

Model olması gerekiyordu.Add (yeni Takım() {İsim = yeni Liste () {"Manchester United"}}); '(İsim bir koleksiyon) –

+0

@StephenMuecke OP'nin modelleri biraz dışarıda standart Teşekkürler, güncelledik. –

+1

OP modeli hiç mantıklı :) Ben varsayalım 'Name' typeof edilmelidir' '' –

0

:

public ActionResult Index() 
{ 
    var model = new List<Team>(); 

    model.Add(new Team { Name = "MU"}); 
    model.Add(new Team { Name = "Chelsea"}); 
    ... 

    return View(model); 
} 

Ve Görünümünüzün: gibi eylem yöntemini değiştirmek gerekir Sonra

public class Team 
{ 
    public int Position { get; set; } 
    public string HomeGround {get; set;} 
    public string NickName {get; set;} 
    public int Founded { get; set; } 
    public string Name { get; set; } 
} 

: Ben bunu değiştirmek için önermek görünüm. Görünümünüz @model IEnumerable<Standings.Models.Teams>'u arıyor ve var model = tm.Name.ToList(); ad listesini geçiyorsunuz. Ekipleri listesini geçmek zorundasınız.

Sen

var model = new List<Teams>(); 

model.Add(new Teams { Name = new List<string>(){"Sky","ABC"}}); 
model.Add(new Teams { Name = new List<string>(){"John","XYZ"} }); 
return View(model); 
İlgili konular