используя javascript и css файлы в ASP.Net MVC View? - PullRequest
1 голос
/ 17 сентября 2009

У меня возникли проблемы с корректной работой плагина jQuery в моем представлении MVC. Вот как это выглядит на данный момент: (Я скопировал все необходимые jQuery-файлы и css-файлы в папку / Scripts сайта)

<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 не может найти класс "star" ни в одном из входных тегов.

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

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

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

Спасибо!

Ответы [ 5 ]

2 голосов
/ 17 сентября 2009

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

В вашем файле 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 голос
/ 17 сентября 2009

, пожалуйста, зарегистрируйтесь 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>
1 голос
/ 17 сентября 2009

Полезно также использовать метод Helper для получения правильного расположения ваших файлов Script и css.

<script src="<%= Html.Content("~/Scripts/jquery-1.3.2.js") %>
        type="text/javascript"></script>
1 голос
/ 17 сентября 2009

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

0 голосов
/ 17 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...