2010-04-11 3 views
0

Je suis begginer dans asp.net mvc et j'ai quelques doutbs sur les routes.Comment faire ce routage (ASP.Net MVC2)?

Im » développer un système de gestion des documents et je dois faire une URL comme ceci:

 routes.MapRoute("Documentos", 
      "{controller}/{documentType}/{documento}/{action}/{id}", 
      new 
      { 
       controller = "Home", 
       documentType = "", 
       documento = "", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

et l'application de travail d'une URL comme thèses:

"Document/administratif/contrat" ​​- (Indexer l'action par défaut pour lister les documents de type 'Contract') "Document/Administrative/Contract/New" - (nouvelle action dans le contrôleur) "Document/Administrative/Contract/10" - (action de détail dans le contrôleur) "Document/Administrative/Contract/Edit/10 "- (modifier l'action dans le contrôleur)

document serait un contrôleur et administratif serait juste une description dans l'URL pour identifier que les documents du « contrat » est administratif ...

Alors, mes doutes est de mes contrôleurs et les actions, les modalités d' la signature des méthodes de contrôleur? Ai-je besoin d'une Zone appelée Documents pour le faire plus facilement?

PS: Désolé pour mon anglais! Merci beaucoup, Cheers!

Felipe

Répondre

0

Il suffit d'avoir 1 document de contrôleur.

Dans ce contrôleur ont des actions Index , Nouveau et Modifier.

Toutes les actions doivent avoir des paramètres documentType et documento ou (mieux) vous avez un Viewmodel comme paramètre ayant des propriétés documentType et documento.

Passez ce Viewmodel à la vue. Dans la vue, utilisez Html.ActionLink pour générer des liens avec documentType et ensemble de documents.

0
routes.MapRoute("Documentos", 
      "Document/{documentType}/{documento}/{action}/{id}", 
      new 
      { 
       controller = "Document", 
       documentType = "", 
       documento = "", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

Lorsque vous voulez une URL de « document/administratif/contrat » par défaut à la liste que vous devez faire une route hardcoded comme ceci:

routes.MapRoute("Documentos", 
      "Document/Administrative/Contract", 
      new 
      { 
       controller = "Document", 
       documentType = "Administrative", 
       documento = "Contract", 
       action = "List" 
      }); 

Vos actions doivent contenir clairement les mêmes noms pour les paramètres que vous utilisez dans les routes. Ou combiner les paramètres dans les classes Model.

public ActionResult(string documentType, string documento, int id) 

ou

public ActionResult(Document doc) 

si vous utilisez le document de classe modèle.

public class Document 
string documentType; 
string documento; 
int id; 

HTH