2010-03-27 5 views
1

Je crée un forum très simple comme mon premier projet MVC. Ma mise en page de base de données est assez simple:Créer un forum simple dans mvc.net

[ForumThread] 
Id 
Title 

[ForumPost] 
Id 
ThreadId 
Message 
ParentId // To tell which post this post should hang on to 
Created 
CreatedBy 
Updated 
UpdatedBy 

Je crée une vue pour le ForumThread pour afficher la liste des sujets et d'être en mesure de créer un nouveau fil.

Il existe une vue détaillée de ForumThread qui affiche le fil avec les posts sous-jacents. Ma question est de savoir comment je le moyen le plus facile dans la vue détails ForumThread, peut afficher une vue pour créer un ForumPost, sans avoir à naviguer vers une autre page en premier?

Répondre

1

Vous pouvez créer une vue partielle (.ascx) qui contiendra la forme vous permettant de créer un poste de forum et inclure cette partie dans la vue détaillée: Comme mentionné par Darin,

<% Html.RenderPartial("~/Views/Home/PostForm.ascx"); %> 
+0

Merci, mais quand j'ai essayé de faire cela, j'ai l'erreur suivante: L'élément de modèle passé dans le dictionnaire est de type 'SampleWebsite.Models.Forum.ForumThreadModel', mais ce dictionnaire nécessite un élément de modèle de type 'SampleWebsite. ForumPost '. – Dofs

+0

Vous pouvez passer un modèle différent au partiel: '<% Html.RenderPartial (" ~/Views/Home/PostForm.ascx ", Model.ForumPost); %> 'qui devrait être du type correct. –

1

vous devez simplement une vue partielle - à l'intérieur de cette vue, vous pouvez implémenter le formulaire, lier à un modèle différent, etc. et également gérer tous les événements, etc., par un contrôleur différent si nécessaire. Il est également agréable d'encapsuler des zones de fonctionnalité dans des vues partielles - garde le code propre et si vous avez besoin d'utiliser à nouveau ce formulaire, puis il suit le principe DRY (Do not Repeat Yourself) - vous venez d'ajouter un autre appel Html.RenderPartial() dans l'endroit où vous en avez besoin.