2010-01-23 6 views
1

Je veux URL implémenté comme:service fichiers HTML ou ASPX avec ASP.NET MVC

www.domain.com/Business/Manufacturing/Category/Product1 

Cela donnera les détails du produit spécifique (comme les spécifications). Depuis la liste des catégories & Produits dans chaque catégorie sont limitées, je pensais qu'il ne vaut pas la peine d'utiliser la base de données pour les produits. Donc je veux l'implémenter en utilisant les fichiers HTML ou ASPX. Aussi je veux que l'URL soit sans l'extension de fichiers (c'est-à-dire que l'URL ne devrait pas avoir l'extension .html ou .aspx)

Comment puis-je l'implémenter avec ASP.NET MVC? Dois-je utiliser une structure de dossiers imbriqués avec des fichiers HTML/ASPX, de sorte qu'elle corresponde à l'URL? Alors comment éviter les extensions dans l'URL? Je suis confondu avec ces pensées

+0

Je ne reçois pas le vote vers le bas, semble être une bonne question pour moi ... – RageZ

Répondre

2

Asp.net Mvc utilise la bibliothèque de routage de Microsoft. Il est donc très facile d'obtenir ce type de structure sans penser à la structure du dossier ou aux extensions de fichiers. Avec asp.new mvc, vous ne pointez pas une requête sur un fichier spécifique. Au lieu de cela, vous pointez sur une action qui gère la demande et utilisez les paramètres pour déterminer ce qui doit être rendu et envoyé au client. Pour mettre en œuvre votre exemple, vous pouvez faire quelque chose comme ceci:

_routes.MapRoute(
      "Product", 
      "Business/Manufacturing/Category/Product{id}", 
      new {controller = "Product", action = "Details", id = ""} 
      ); 

Cette route détectera l'URL que vous avez décrit et exécuter l'action nommée « Détails » sur un contrôleur nommé « ProductController » (si vous utilisez les paramètres par défaut) . Cette action peut ressembler à ceci:

public ActionResult Details(int id) { 
    return View(string.Format("Product{0}", id); 
} 

Cette action rendra ensuite des vues en fonction de ce identifiant le produit ont (le nombre après « Produit » à la fin de votre exemple url). Cette vue doit être située dans le dossier Views/Product si vous utilisez les paramètres par défaut. Ensuite, si vous ajoutez une vue nommée "Product1.aspx" dans ce dossier, c'est l'affichage qui sera rendu lorsque vous visiterez l'URL dans votre exemple.

Tout ce qu'il est difficile de faire de cette façon, je le recommande fortement. Vous aurez à faire beaucoup de travail en double, même si vous avez seulement quelques produits et utilisez des vues partielles dans un bon moyen de minimiser les duplications ui. Je vous recommande d'utiliser une base de données ou un autre type de stockage pour vos produits et d'utiliser une seule vue comme modèle pour rendre le produit. Vous pouvez utiliser le même itinéraire pour cela. Vous venez d'éditer votre action un peu. Il peut ressembler à ceci:

public ActionResult Details(int id) { 
    var product = //get product by id from database or something else 
    return View(product); 
} 

De cette façon, vous pouvez fortement saisir votre point de vue d'un objet produit et vous n'aurez pas beaucoup double emploi. Le moteur de routage est très flexible, et quand vous avez joué avec et appris comment cela fonctionne, vous serez capable de changer votre URL de la manière que vous voulez sans changer d'autre code ou déplacer des fichiers.

1

Si vous n'êtes pas prêt à plonger dans ASP.Net MVC, vous pouvez toujours obtenir les bonnes URL en utilisant l'URL Rewriting pour ASP.Net. Ce serait plus simple si vous connaissiez déjà ASP.Net WebForms. L'article MSDN sur l'URL Rewriting doit être un bon début:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

Je serais vraiment sûr que vous ne finira par avoir plus de produits avant de décider de ne pas utiliser une base de données.MVC et WebForms vous permettraient de créer une page qui afficherait un produit de façon dynamique tout en conservant une bonne URL. De plus, vous pourriez économiser du temps de développement. Quelque chose à quoi penser.

Questions connexes