2009-09-17 8 views
1

J'ai du mal à faire fonctionner un plugin jQuery correctement dans ma vue MVC. Voici à quoi il ressemble au moment: (je l'ai copié tous jQuery nécessaire comprend et les fichiers CSS dans le dossier/Scripts du site) Le IntelliSense est piaillement que l'élément de liaison ci-dessus ne peuten utilisant les fichiers javascript et css dans ASP.Net MVC View?

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.MetaData.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.rating.js" type="text/javascript"></script> 
<link href="/Scripts/jquery.rating.css" rel="stylesheet" type="text/css" /> 

<input name="rating" type="radio" class="star" value="1"/> 
<input name="rating" type="radio" class="star" value="2"/> 
<input name="rating" type="radio" class="star" value="3"/> 
<input name="rating" type="radio" class="star" value="4"/> 
<input name="rating" type="radio" class="star" value="5"/> 
</asp:Content> 

être imbriqué dans une balise div (quelle div?) Intellisense ne peut pas non plus trouver la classe "star" dans l'une des balises d'entrée.

Lorsque je navigue vers la page en question, je ne vois pas les étoiles, juste une liste de boutons radio. C'est comme si les trucs de jQuery ne fonctionnaient pas.

Où dois-je placer le script et les balises de liaison dans une vue MVC? Quelqu'un a-t-il de petits échantillons que je peux citer à titre d'exemple?

Je reviens sur cet exemple de "Professional ASP.Net MVC" de Wrox et le chapitre Ajax laisse à désirer, car le code est tous les snippets sans pages complètes. Le code du chapitre du site Wrox pour ce livre comprend également les mêmes extraits, un par fichier texte, et ne sert à rien.

Merci!

Répondre

1

Vous aurez besoin de mettre le <link /> dans la section <head>...</head> les balises de script devraient être bien. Vous pouvez le mettre dans la tête d'une page maître.

+0

Merci pour tous les conseils, tout le monde.Il s'avère, une fois que j'ai eu le lien et les balises

0

Utilisez-vous une page maître pour votre site? Si c'est le cas, vous pouvez mettre toutes vos balises d'inclusion dans la page principale, elles seront alors disponibles pour toutes les vues en utilisant la page principale.

+0

Salut Fermin, Merci pour votre réponse. J'utilise une page maître, et j'ai essayé de mettre tout le script et les balises de lien ci-dessus dedans. Intellisense ne s'est pas plaint, mais la page n'a pas rendu d'étoiles. En fait, rien n'a été rendu! Je voudrais également éviter de mettre ces fichiers javascript dans Site.Master puisque seule la page les utilisera. – larryq

+0

Avez-vous utilisé un outil comme firebug pour voir comment la page est rendue et voir si le javascript se charge bien. Avez-vous votre $ (function() {} dans votre fichier js? – Fermin

2

Dans votre fichier de maquette, créez un espace réservé de contenu dans la zone d'en-tête. Vous pouvez l'utiliser chaque fois que vous avez besoin d'insérer des scripts et des styles dans des vues spécifiques, ce qui signifie que vous ne dévierez pas des instructions indiquant que c'est là que ces fichiers doivent être placés.

Dans votre fichier Site.master:

<head> 
<!-- head stuff here --> 
<asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

À votre avis fichier ASPX:

<asp:Content ContentPlaceHolderID="HeadContent" runat="server"> 
    <script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script> 
    <script src="/Scripts/jquery.MetaData.js" type="text/javascript"></script> 
    <script src="/Scripts/jquery.rating.js" type="text/javascript"></script> 
    <link href="/Scripts/jquery.rating.css" rel="stylesheet" type="text/css" /> 
</asp:ContentPlaceHolder> 

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
    <input name="rating" type="radio" class="star" value="1"/> 
    <input name="rating" type="radio" class="star" value="2"/> 
    <input name="rating" type="radio" class="star" value="3"/> 
    <input name="rating" type="radio" class="star" value="4"/> 
    <input name="rating" type="radio" class="star" value="5"/> 
</asp:Content> 
1

Il est aussi un excercise utile d'utiliser une méthode d'assistance pour obtenir l'emplacement correct de votre script et fichiers css.

<script src="<%= Html.Content("~/Scripts/jquery-1.3.2.js") %> 
     type="text/javascript"></script> 
1

s'il vous plaît vérifier dans fiddler et voir genre wat de réponse ur obtenir quand u appeler le fichier particulier .... si le script est rendu correctement et pour cette page particulière ... si non, alors s'il vous plaît poster la réponse et une copie ..

j'ai eu un problème similaire quand je travaillais avec js en mvc je n'étais pas capable de charger la requête j ... donc pour cela j'ai créé une classe d'aide qui renvoie le chemin absolu pour moi

public static string ResolveUrl(this HtmlHelper html, string virtualUrl) 
    { 
     Control con = new Control(); 
     var RelativeUrl = con.ResolveUrl(virtualUrl); 
     if (!virtualUrl.StartsWith("~/")) 
      return RelativeUrl; 

     virtualUrl = virtualUrl.Remove(0, 2); 

     string applicationPath = html.ViewContext.HttpContext.Request.ApplicationPath; 
     if (string.IsNullOrEmpty(applicationPath) || !applicationPath.EndsWith("/")) 
     { 
      applicationPath = applicationPath + "/"; 
     } 

     return applicationPath + virtualUrl; 
     } 
    } 

et à mon avis j'ai appelé la page comme ça. ..

<script src="<%= Html.ResolveUrl("~") %>Scripts/jquery-1.3.2.js" type="text/javascript"></script> 
Questions connexes