MVC 3 jquery renderbody <=> Заголовок (_layout) - PullRequest
4 голосов
/ 07 февраля 2012

Так что это моя проблема: у меня в проекте MVC 3 мой макет со всеми включенными в него сценариями js:

<link runat="server" rel="shortcut icon" href="@Url.Content("~/Content/favicone/favicon.ico")" type="image/x-icon"/>
<link runat="server" rel="icon" href="@Url.Content("~/Content/favicone/favicon.ico")" type="image/ico"/>
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.jcarousel.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.dimension.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/cultures/globalize.culture." + CurriculumVitae.Helpers.CultureHelper.GetCurrentCulture() + ".js")" type="text/javascript"></script>

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.17.custom.min.js")" type="text/javascript"></script>
<script type="text/javascript">
    function mycarousel_initCallback(carousel) {....}</script>

Но только мои представления по умолчанию могут использовать эти сценарии, когда я перехожу в другое представление(в renderbody), и мне нужно использовать некоторые jquery, мне нужно переопределить скрипт, чтобы он заработал:

@{ViewBag.Title = "Index";}
@section header{
    <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.17.custom.min.js")" type="text/javascript"></script>
    <script>
        $.fx.speeds._default = 1000;
        $(function () {
            $("#dialog").dialog({
                autoOpen: true,
                show: "blind",
                hide: "explode"
            });
            $("#opener").click(function () {
                $("#dialog").dialog("open");
                return false;
            });
        });
 </script>
}

<a id="opener" href="javascript:void();">test </a>
<div id="dialog" title="Basic modal dialog">
    <p>terst nmsdfnms dfds fsd f JQUERYYYYYYYYYYYYYY</p>
</div>

И это только начало ... У меня другая проблема с темой /Культура ..

Дело в том, что в исходном коде моей веб-страницы я нашел все скрипты из _layout (и "view"), но без заголовка @section даже простой вызов js не будетработать, если он должен использовать скрипт из моего заголовка (_layout)

спасибо

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я нашел свою проблему:

  1. Никогда не переустанавливайте и не переопределяйте jquery-1.7.1.min.js внутри одной и той же сети. страница, поскольку это создаст конфликт между каждым вызовом jquery.

  2. Один из моих скриптов, использующих (jcarousel.js), был неправильно настроен ( initCallback param).

Спасибо всем;)

0 голосов
/ 07 февраля 2012

Поскольку вы не указываете макет в своем представлении, вы можете попробовать две вещи:

Убедитесь, что ваш макет "по умолчанию" правильно настроен в "~Views/_ViewStart.cshtml":

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Из вас можно явно установить желаемый макет вашего вида:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...