2009-09-17 2 views
1

У меня возникли проблемы с правильной работой плагина jQuery в моем представлении MVC. Вот как это выглядит на данный момент: (Я скопировал все необходимые JQuery включают и CSS файлы в папку/Scripts сайта)с использованием javascript и css-файлов в 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> 

IntelliSense является кудахтаньем, что элемент ссылки выше, не может быть вложенные в тег div (что div?) Также не может intellisense найти «звездный» класс в любом из входных тегов.

Когда я перехожу к рассматриваемой странице, я не вижу звезд, просто список переключателей. Это похоже на то, что jQuery не запускается.

Где я должен помещать сценарий и теги ссылок в представлении MVC? У кого-нибудь есть небольшие образцы, которые я могу взять в качестве примера?

Я перехожу к этому примеру из «Профессионального ASP.Net MVC» из Wrox, и глава Ajax оставляет желать лучшего, поскольку код - это все фрагменты без полных страниц. Код главы веб-сайта Wrox для этой книги также состоит из одних и тех же фрагментов, по одному на текстовый файл и бесполезен.

Спасибо!

ответ

1

Вам нужно будет поместить <link /> в раздел <head>...</head>, чтобы теги скриптов были в порядке. Вы можете поместить его в начало главной страницы.

+0

Спасибо за все советы, всем. Как оказалось, как только я получил ссылку и

0

Вы используете основную страницу для своего сайта? Если это так, вы можете поместить все свои теги include на главную страницу, тогда он будет доступен для всех просмотров с использованием главной страницы.

+0

Привет Фермин, Спасибо за Ваш ответ. Я использую мастер-страницу и пытаюсь поместить в нее все сценарии и теги ссылок. Intellisense не жаловался, но страница не показывала никаких звезд. На самом деле ничего не сделано! Я также хотел бы не помещать эти файлы javascript в Site.Master, так как только одна страница будет их использовать. – larryq

+0

Вы использовали такой инструмент, как firebug, чтобы посмотреть, как отображается страница и посмотреть, насколько хорошо загружается javascript. У вас есть ваш $ (function() {} в вашем js-файле? – Fermin

2

В файле главной страницы создайте местозаполнитель содержимого в области головы. Вы можете использовать это, когда вам нужно вставлять скрипты и стили в определенные виды, что означает, что вы не будете отклоняться от рекомендаций, в которых говорится, что именно там должны идти такие файлы.

В файле Site.Master:

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

На ваш взгляд 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

Это также полезно Excercise использовать метод Helper, чтобы получить правильное расположение вашего сценария и css-файлы.

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

пожалуйста, проверьте в fiddler и не видит Ваты вида ответа ур получать, когда и вызвать конкретный файл .... если скрипт оказанного надлежащим образом и для этой конкретной страницы ... если нет, то пожалуйста, напишите ответ и копия.

У меня возникла аналогичная проблема, когда я работал с js в mvc, я не смог загрузить j-запрос ... так что для этого я создал вспомогательный класс, который возвращает абсолютный путь для меня

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; 
     } 
    } 

и, на мой взгляд, я назвал страницу следующим образом. ..

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