2016-10-09 3 views
-3

Ich habe ein Problem mit meinem kleinen Website-Service. Ich muss eine Wand mit dem Post und dem Kommentar des Benutzers codieren. Ich habe einig Modell für Beitrag:Wand voller Post und Kommentar in .NET

public class Post 
{ 
    public int ID { get; set; } 
    public string PostContent { get; set; } 
    public DateTime PostDateTime { get; set; } 

    public virtual ApplicationUser ApplicationUser { get; set; } 
    public virtual ICollection<Comment> Comments { get; set; } 
} 

und Kommentar:

public class Comment 
{ 
    public int ID { get; set; } 
    public string CommentContent { get; set; } 
    public DateTime CommentDateTime { get; set; } 
    public int PostId { get; set; } 

    public virtual ApplicationUser ApplicationUser { get; set; } 
    public virtual Post Post { get; set; } 
} 

Wie kann ich alle Beiträge und seinen Kommentar in der Ansicht angezeigt werden?

Antwort

-1

Wenn ich Dinge von verschiedenen Modellen mischen muss, verwende ich normalerweise eine ViewModel.

Es ist ein Modell für bestimmte Ansichten, wo ich Daten aus verschiedenen Quellen oder bestimmten Berechnungen gestellt habe.

Grundsätzlich ist es nur ein weiteres Modell, mit den erforderlichen Feldern.

In Ihrem Fall könnte es so etwas wie

public class PostAndComments 
{ 
    public int IDPost { get; set; } 
    public int IDComment { get; set; } 
    public string CommentContent { get; set; } 
    public DateTime CommentDateTime { get; set; } 
    public string PostContent { get; set; } 
    public DateTime PostDateTime { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 
    public virtual Post Post { get; set; } 
} 

Und in Ihrer Aktion, die Sie sowohl einen Beitrag übergeben und einen Kommentar Modell, assing die verschiedene Felder von beiden PostAndComment und dass der View übergeben.

Die Aktion sollte wie

ActionResult PostComment(Post post, Comment comment) 
{ 
    PostAndComments postcomment = new PostAndComments 
     { 
      IDPost = post.ID, 
      IDComment = comment.ID, 
      etc... etc... 
     } 
} 

machen es eine Teilansicht unnötige Komplexität würde hinzufügen Throught.

+0

Ok, aber wie alle Post + Kommentar auf einer Seite anzeigen? Wie könnte es aussehen? Wie sieht es im Controller aus? – Zarobiek

+0

Ok, werde ich versuchen, dieses: D – Zarobiek

+0

@Zarobiek Sobald Sie in der cshtml Seite sind, in dem Sie ein Modell PostAndComments bestanden haben Sie können einfach schreiben HTML-Seite mit separaten divs für Beiträge und Kommentare (oder nur nehmen Sie eine Vorlage irgendwo) und rufen Sie einfach Model.PostContent und Model.CommentContent wo Sie Hinweis müssen, dass alle diese Code Anrufe ein @ vor ihnen benötigen so Razor Motor sie als C# -Code nennen –

Verwandte Themen