Проблема с размещением ContentPlaceHolder в тегах <script> - PullRequest
2 голосов
/ 02 февраля 2010

У меня есть это на главной странице ASP.Net:

 <script language="javascript" type="text/javascript">
        <asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>
    </script>

Но когда я пытаюсь просмотреть страницу содержимого в режиме разработки, она говорит мне, что в связанной главной странице есть ошибка, потому что "scriptContentHolder"не существует.

<asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
    g_page = "mnuSurveys";
</asp:Content>

Если я изменю главную страницу на эту:

<asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>

и страницу содержимого на эту:

<asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
<script language="javascript" type="text/javascript">
    g_page = "mnuSurveys";   
    </script>
</asp:Content>

Тогда всеэто круто.Почему это?Страница компилируется и выполняется просто отлично ... но, как указано выше, дизайнер кричит при размещении элементов управления ContentPlaceHolder в тегах.

Ответы [ 3 ]

9 голосов
/ 16 сентября 2010

У меня была такая же проблема, и я решил ее так:

<%= "<script type=\"text/javascript\">" %>    
    jQuery(document).ready(function() {
        // On document ready, execute this methods... 
        <asp:ContentPlaceHolder ID="jQueryOnDocReady" runat="server" />                 
    });
<%= "</script>"%>
1 голос
/ 02 февраля 2010

Согласно этой публикации MS Connect по состоянию на май '09 г.,

VS конструктор не поддерживает элементы управления внутри блоков скрипта. Поочередно ты может позвонить Page.ClientScriptManager.RegistgerClientScriptBlock со страницы содержания

[так в оригинале]

Так что вам придется использовать второй метод / метод обхода, который вы опубликовали.

0 голосов
/ 29 сентября 2010

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

-В моем .Мастер:

<script type="text/javascript">
     var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXXX-X']);
    _gaq.push(['_trackPageview']);
</script>

<asp:ContentPlaceHolder ID="PerPageScript" runat="server">
</asp:ContentPlaceHolder>

-В моем .aspx:

<asp:Content ID="Content1" ContentPlaceHolderID="PerPageScript" runat="server">
    <script type="text/javascript">
    ...
    </script>
</asp:Content>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...