2010-05-13 3 views
0

Je suis nouveau dans ASP.NET MVC2. Mais je veux développer un simple site de Newsletter. Le principal problème qui m'a bloqué est comment utiliser correctement le modèle MVC dans les détails des Nouvelles et la liste des commentaires.Besoin d'un conseil pour ASP.NET MVC2 Newsletter Projet

Par exemple:

J'ai un NewsController et de l'action Détails intérieur. Et deux classes de modèles Nouvelles et Commentaires. Je veux afficher tous les commentaires appartiennent à cet enregistrement Nouvelles et textarea pour l'ajout de nouveaux commentaires. Je wand afficher tout ce contenu dans /Nouvelles/Details/

Comment puis-je faire? J'ai essayé d'utiliser PartialViews dans Détails Voir: un pour ajouter un commentaire et un autre pour la liste des commentaires. J'ai passé l'objet de commentaire complet ViewData ["Comment"]. Mais j'ai des problèmes avec mes modèles (pense que je ne peux pas utiliser deux modèles dans la vue)

Encore une fois. Comment puis-je afficher Single Post + Commentaires + ajouter un commentaire à une seule page en utilisant ASP.NET MVC2?

Un autre exemple est stackoverflow.com. Voici une question + réponses + écrire réponse. J'ai besoin de la même structure

Répondre

1

@ ck3g, ne vous inquiétez pas, c'est vraiment plus facile que vous ne le pensez.

Tout d'abord oui, vous pouvez passer deux modèles à une vue. Vous avez simplement besoin de les emballer en troisième classe et de passer la troisième classe à la vue;

  • classe A() {}
  • classe B() {}
  • classe C() {public A a; public B b}

Passez la classe C à votre vue.

Si la classe B était tous vos commentaires, j'aurais une vue partielle qui prendrait B comme modèle. Je ferais alors un foreach sur le modèle et appellerais une autre vue partielle pour rendre le commentaire individuel. cela facilite le coiffage et le refactoring plus tard.

Je voudrais également envelopper la vue partielle dans son propre div afin que vous puissiez remplacer le contenu plus tard après un appel ajax. Pour ajouter un commentaire, je voudrais à nouveau avoir une vue partielle et lorsque vous appuyez sur le bouton Soumettre, je ferais un appel jquery à un résultat d'action, enregistrer le commentaire, puis relire tous les commentaires de la base de données. puis, dans votre code C#, renvoyez une vue partielle à l'appel jquery en utilisant RenderPartial("partialviewname", commentsModel);.

une fois que vous êtes de retour en javascript land, vous pouvez remplacer tout le contenu du commentaire parent div que vous avez créé plus tôt avec le nouveau html et là vous avez des commentaires. Ce que vous voudrez peut-être faire maintenant est de rechercher cela dans NerdDinner et ensuite poser des questions plus spécifiques.

Bonne chance et amusez-vous bien.