2010-12-14 23 views
1
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 

Le code ci-dessus montre une balise d'inclusion css externe déclarée dans le modèle Site.Master.Pourquoi l'équipe Asp.net MVC a-t-elle choisi "../../Content/Site.css" plutôt que "~/Content/Site.css" dans la page Site.Master?

Ma question: pourquoi l'équipe Asp.net MVC a-t-elle choisi cette option plutôt que d'utiliser "~/Content/Site.css"?

Est-ce la meilleure pratique? Je suis désolé, je suis un débutant et continue d'apprendre à améliorer mes compétences.

EDIT 1: Je tiens à préciser que "~ /" doit d'abord être passé à la méthode de résolution d'url. Ainsi, je peux réécrire ma question comme suit:

Pourquoi l'équipe a-t-elle choisi "../ .." plutôt que "~ /" résolu par un résolveur d'URL?

Répondre

0

Ce problème a été résolu par MVC 3 comme suit: Je pense que l'équipe MVC a lu cette question :-)

<head> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 
</head> 
+0

@Andrew Barber: Regardez ceci, MVC 3 l'a corrigé. :-) – xport

1

~ est une chose asp.net et n'a pas de sens en pur html. Dans les formulaires Web qui sont gérés en transformant le tag en un contrôle serveur, cela peut traduire ~ en un chemin absolu, tandis que MVC devrait appeler vous-même une méthode. Une certaine méthode étant Server.MapPath par exemple

+0

Étant donné que MVC et WebForm ont besoin de l'aide d'IIS pour rendre la sortie HTML, il Peu importe si nous utilisons ~/dans MVC aussi, non? Ou il y a une autre considération prise par l'équipe pour choisir ../ .. plutôt que ~ /? – xport

+0

comme je l'ai dit ... si vous écrivez ~ dans le code HTML, il sera juste émis dans le navigateur, mais le navigateur ne sait pas quoi faire avec. –

+0

Mais nous pouvons utiliser l'assistant html côté serveur pour résoudre l'URL. Ou vous voulez dire, en utilisant "../../", cela économisera "l'énergie" du serveur? – xport

2

Se référer à ce que dit @Pauli Østerø. Mais, puisque vous avez demandé une meilleure pratique, ici, il faut se débarrasser de ces chaînes codées en dur. Utilisez T4MVC pour ces chemins

+0

T4MVC peut fonctionner avec le moteur de vue rasoir? – xport

+1

T4MVC est un générateur de code, donc peu importe le moteur que vous utilisez ... c'est comme maintenir une classe de chaînes, mais au lieu de le faire à la main, il est généré automatiquement pour vous en fonction de la façon dont vos modèles actuels , routes, etc. ressemble à la structure réelle du fichier. –

1

Ou utilisez "/Content/Site.css", car "/" indique la racine du site en html.

+0

L'utilisation de/n'est pas une solution portable. Nous ne savons jamais à l'avenir nous devons déplacer l'application pour être une application pour enfants. – xport

+0

Bon point! Je n'ai pas vu ça. –