2017-06-07 1 views
0

Usin ASP.NET Ich versuche, einem Objekt in einem Modell eine Liste von Profilen hinzuzufügen und dann diese Liste in der Ansicht aufzuzählen.Übergabe des Objekts, das das Objekt enthält, an das Modell in ASP.NET

 public ActionResult Index(BlogPage currentPage) 
    { 
     var model = new BlogPageModel(currentPage); 

     var pages = new List<BlogPage>(); 

     var profilePages = new List<ProfilePage>(); 
     if (currentPage.ProfileArea != null) 
     { 
      foreach (LinkItem linkItem in currentPage.ProfileArea) 
      { 
       var page = _pageDataHelper.GetPageData(linkItem); 
       var profilePage = page as ProfilePage; 
       if (profilePage != null) 
       { 
        profilePages.Add(profilePage); 
       } 
      } 
      model.Profiles = profilePages; 
     } 
     return View(model); 
    } 

diesen Code in der Ansicht verwenden:

@foreach (ProfilePage profile in Model.BlogPages) 
      { 
      @Html.Partial("../ProfilePage/Index", new PageViewModel<ProfilePage>(profile)) 
      } 

oben Code jedoch den Fehler zurückgibt:

CS0030: Cannot convert type 'Models.Pages.BlogPage' to 'Models.Pages.ProfilePage'

Kann mir jemand den richtigen Weg weisen eine Liste innerhalb eines speichern dieses verschachtelte Objekt in einer Ansicht modellieren und rendern?

Danke!

+0

Ist das Model des ProfilePage/Index eine ProfilePage? Hast du das überprüft? –

+3

Ich nehme an, dass Sie 'foreach'' Model.Profiles' wollen –

+1

yeah, Sie durchlaufen "Model.BlogPages", das ist die einzige Referenz auf diese Eigenschaft in den Schnipsel über – Jonesopolis

Antwort

1

Hallo Es scheint, dass Sie ein Problem in der für jede Schleife haben, aber ich konnte nicht genau die Problemlinie herausfinden, da das Modell oben nicht verfügbar ist.

Antwort auf Ihre Frage:

Kann mir jemand den richtigen Weg weisen eine Liste innerhalb eines Modells zu speichern und machen dieses verschachtelte Objekt in einer Ansicht?

ex:

public class somemodelname 
{ 
    public list<anytype> somepropertyname{get;set;} 

} 

zugreifenden:

@foreach (var singlevalueOrObj in Model.somepropertyname) 
      { 
      @Html.Partial("../ProfilePage/Index", new PageViewModel<singlevalueOrObj >(profile)) 
      } 

In der obigen Art und Weisen Sie jede Liste Objekt in Ihrem Modell speichern und für die Seite als gleiche Art und Weise zu machen, wie Sie in der oben taten, benutzt die Teilansicht.

Die obige Information war hilfreich.

Dank

Karthik

+0

Hallo vielen Dank für Ihren Kommentar. – dwigt

+0

Mein Vergnügen und glücklich, dass es hilfreich war ein bisschen .. :) –

1

Sie haben einen Tippfehler in Ihrer foreach Schleife:

@foreach (ProfilePage profile in Model.BlogPages) 
{ 
    @Html.Partial("../ProfilePage/Index", new PageViewModel<ProfilePage>(profile)) 
} 

Sie über die Eigenschaft sind Looping BlogPages nicht Eigentum Profiles, die Sie mit einer ProfilePage Sammlung in Ruhe einstellen Controller:

var pages = new List<BlogPage>(); 

var profilePages = new List<ProfilePage>(); 
if (currentPage.ProfileArea != null) 
{ 
    ...shortened for length... 
    model.Profiles = profilePages; // Right here is what you intended to loop over 
} 
Verwandte Themen