Question

Je suis en train d'accéder à un fichier .js dans le répertoire de vues. J'ai une application MVC avec /Views/Home/MyControl.ascx J'ai /Views/Home/MyControl.js fichier js

Je voudrais faire référence au fichier .js et conservez-le avec le contrôle. J'ai essayé les entrées suivantes dans le routage, et aucun ne semble fonctionner.

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{file}.js");
        routes.IgnoreRoute("{resource}.js/{*pathInfo}");
        routes.IgnoreRoute("{controller}/{resource}.js/{*pathInfo}");
        routes.IgnoreRoute("{*alljs}", new { alljs = @".*\.js(/.*)?" });

S'il vous plaît aider, s'il vous plaît ne suggèrent pas d'ajouter le fichier .js dans le répertoire des scripts. Je voudrais le faire fonctionner de cette façon, ou de savoir pourquoi il ne peut se faire.

Je mettrais le script dans la page, que le débogage de script est cassé dans VS2010 B2.

Merci Cordialement Craig.

Était-ce utile?

La solution

Le dossier Views est, bien pour les vues, et javascript doit être mis ailleurs. Voilà pourquoi les concepteurs du framework MVC mis un web.config dans ce dossier Views qui refuse l'accès à un fichier à l'intérieur. Vous pouvez modifier ce paramètre, mais soyez averti defaut que cela pourrait être un trou de sécurité potentiel. Donc, ouvrez le fichier web.config situé dans le dossier et Views:

Remplacer:

<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

avec:

<httpHandlers>
  <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.master" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

Accédez à http://yoursite/Views/test.js

P.S. Vous pouvez également supprimer tous les IgnoreRoutes que vous mettez dans global.asax.

Autres conseils

Ne serait-ce pas une meilleure solution en utilisant la DefaultHttpHandler pour les ressources en html et en gardant le HttpNotFoundHandler pour tous les autres types de fichiers

<httpHandlers>  
  <add path="*.html" verb="*" type="System.Web.DefaultHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

En fait pour IIS mode intégré, vous devez utiliser System.Web.StaticHttpHandler:

<httpHandlers>
  <add path="*.css" verb="*" type="System.Web.StaticHttpHandler"/> 
  <add path="*.js" verb="*" type="System.Web.StaticHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers>

œuvres Apparemment System.Web.DefaultHttpHandler en mode IIS classique uniquement.

MVC 4 I eu pour mettre à jour la section de gestionnaire ainsi que la section httpHandlers.

Je mis à jour le fichier web.config dans le dossier vues avec ce qui suit.

<httpHandlers>
  <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

<handlers>
  <remove name="BlockViewHandler" />
  <add name="BlockViewHandlerRazor" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  <add name="BlockViewHandlerAspx" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top