CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум .NET > Форум ASP.NET

Ответ Создать новую тему
 
Старый 13.01.2012, 19:03   #1
varb
Новичок
 
Регистрация: 13.07.2011
Сообщений: 19
Репутация: 1 (1)
По умолчанию Открытие html-страницы непосредственно в <asp:Content>

Добрый день уважаемые форумчане!

Сразу извиняюсь "за много текста"...Мне лишь хотелось подробно изложить суть моей проблеммы.

Есть у меня два взаимосвязанных вопроса:

1)
Появилась такая ситуация. Имеется Master Page, у которого присутствуют: Текстовый заголовчик, под ним строка меню, а к левому боку прижат вертикальный дивчик (по высоте до конца), который содержит css-пункты меню для дополнительной навигации. Таким образом, остальная область свободна и занимается под <asp:ContentPlaceHolder>.

Суть в том, чтобы

в этой "оставшейся области" выводилось не только содержимое других aspx-файлов, выбором пунктов основного горизонтального или дополнительного вертикального меню,

но и, если какие-то из меню привязаны на мой html-файл или глобальную страничку,

чтобы их содержимое так же выводилось в эту "оставшуюся область", а не открытием новой страницы.
???



2)
На Master Page блок <asp:ContentPlaceHolder> заключен в div вида:
Код HTML
1
2
3
4
    <div id="ContextPanel" ... float:left; width:100%; height:100%; overflow:auto">
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
Когда в "дочернем" aspx-файле содержимое более широкое, чем в отведенной для вывода области Master Page, я предполагал, что указанный атрибут "overflow:auto" (аналогично и для "overflow:scroll") автоматически осуществит прокрутку по горизонтали или по вертикали(в зависимости от нужды), однако происходит лишь вертикальная прокрутка с переносом на новую строку горизонтальных "оверфлоу'ев".
Как мне можно добиться "не браузерного" скролла в обоих направлениях?



И всё это хотелось бы без добавления <asp:Panel>, загрузки в неё кода и т.д. и т.п.

Последний раз редактировалось Памирыч; 13.01.2012 в 19:16. Причина: Шрифт
varb вне форума
Другие темы раздела
ASP NET C# Как можно вызвать хранимую процедуру и при вызове передать ей параметр
ASP.NET C# вопрос: Есть веб-приложение, на странице содержится GridView с подключённой базой данных через SqlDataSource. Как можно вызвать хранимую процедуру( StoredProcedure2) и при вызове передать этой процедуре параметр??? Я вызывал хранимую процедуру(другую хранимую процедуру ) по имени.... Как можно вызвать хранимую процедуру и при вызове передать ей параметр
Как вставить html страничку в MasterPage? ASP NET C#
Переделывать ее в aspx? Или напрямую как-то можно?. Как вставить html страничку в MasterPage?
Старый 13.01.2012, 23:33   #2
sau
Форумчанин
 
Аватар для sau
 
Регистрация: 22.07.2011
Адрес: Москва
Сообщений: 1,259
Репутация: 637 (507)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

1.
мой html-файл
- простой html файл не может работать с мастер.страницей, это должен быть aspx файл., поэтому можешь ссылаться на aspx-ы, а уже в них грузить свою html страничку.
2.
overflow:auto
- будет работать в обоих направлениях если у дочерних элементов (или у одного из них) задана ширина больше контейнера., твоя проблема в верстке.
sau на форуме
Старый 24.01.2012, 18:39  [ТС]   #3
varb
Новичок
 
Регистрация: 13.07.2011
Сообщений: 19
Репутация: 1 (1)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

По ходу дела всплыл ещё два вопроса.

Моя MasterPage:
Код HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
<%@ Master Language="C#" [B]AutoEventWireup="false"[/B] CodeBehind="Browser.master.cs" Inherits="ICONF2012.Browser" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>...</title>
    <link href="CSS/MainHorizontalMenu.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="CSS/VerticalMenu.css" rel="stylesheet" type="text/css" media="screen" />
    <!--[if IE]>
        <style type="text/css">
            p.iepara{ padding-top: 1em; }
        </style>
    <![endif]-->
    <link href="CSS/ui-lightness/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" media="screen" />
    <script src="Scripts/jquery-1.6.4.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function() {
            var VertMenu = document.getElementById("VertLeftPanel");
            var MainMenu = document.getElementById("MainMenu");
             .................
            //Set current Time:
            function HourConverter(outHour, HourElem) {
                if (outHour > 23) { newHour = outHour - 24; outHour = newHour; }
                if (outHour < 10) { document.getElementById(HourElem).innerHTML = "0" + outHour; }
                else { document.getElementById(HourElem).innerHTML = outHour; }
            }
            function CurrentDate() {
                var now = new Date();
                var GMT = now.getHours() + now.getTimezoneOffset() / 60;
                HourConverter(now.getHours(), 'HourDiv');
                HourConverter(GMT + 2, 'OdessaHours');
 
                var outMin = now.getMinutes();
                if (outMin < 10) { document.getElementById('OdessaMinutes').innerHTML = document.getElementById('MinutDiv').innerHTML = "0" + outMin; }
                else { document.getElementById('OdessaMinutes').innerHTML = document.getElementById('MinutDiv').innerHTML = outMin; }
 
                var outSec = now.getSeconds();
                if (outSec < 10) { document.getElementById('OdessaSeconds').innerHTML = document.getElementById('SecDiv').innerHTML = "0" + outSec; }
                else { document.getElementById('OdessaSeconds').innerHTML = document.getElementById('SecDiv').innerHTML = outSec; }
            }
            CurrentDate();
            setInterval(function() { CurrentDate(); }, 1000);
 
            $('#current').click(function() {
                ...
            });
            $('#PrCom').click(function() {
                ...
            });
            $('#LstPart').click(function() {
                ...
            });
            ........
        });
        $(window).bind('resize', function() {
            var VertMenu = document.getElementById("VertLeftPanel");
            var MainMenu = document.getElementById("MainMenu");
            ...
        });
  </script>
</head>
 
<body  style="background-color:#111159;" >
    <form id="form1" runat="server">
        <center><div id="ConferenceTitle" style=" text-align:center; font-family:Monotype Corsiva; font-size:36pt; font-weight:bold; color:White; width:700px; height:20%">International Conference in Odessa<br>June 21-26,2012</div>
    <div id="MainMenu">
        <ul class="solidblockmenu">
            <li><a href="some link" ...>...</a></li>
            <li><a href="some link" ...>...</a></li>
            ...
            <li><a href="some link" ... class="current">...</a></li>
            ...
            <li class="currenttime">Current Time:<span style="color:#00FF00"><span id="HourDiv"></span>:<span id="MinutDiv"></span>:<span id="SecDiv"></span></span></li>
            <li class="currenttime">Odessa Time:<span style="color:#00FF00"><span id="OdessaHours"></span>:<span id="OdessaMinutes"></span>:<span id="OdessaSeconds"></span></span></li>
        </ul>
        <br style="clear: left" />
    </div>
    <div id="VertLeftPanel">
        <div id="menu4">
            <ul>
                <li><a id="current" href="Default.aspx?id=1">Important Dates</a></li>
                <li><a id="PrCom" href='' onclick="return false;">Program Committee</a></li>
                <li><a id="LstPart" href="Participants.html">List of Participants</a></li>
                <li><a id="Schedule" href="Schedule.html">Conference Schedule</a></li>
                <li><a id="Accomod" href="Accomodation.html">Accomodation</a></li>
                ...
            </ul>
        </div>
    </div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel runat="server" ID="updPanel">
    <ContentTemplate>
    <div id="ContextPanel" style="... overflow:auto">
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </ContentTemplate>
    </asp:UpdatePanel>
    </center>
    </form>
</body>
</html>
 
Одна из моих "SlavePage":
Код HTML
1
2
3
4
5
6
7
8
 
<%@ Page Language="C#" [B]AutoEventWireup="true"[/B] CodeBehind="Default.aspx.cs" Inherits="ICONF2012._Default" 
    MasterPageFile="~/Browser.master" %>
 
<asp:Content ID="DefaultContent" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Label ID="Label1" runat="server" Text="" ForeColor="Red"></asp:Label>
</asp:Content>
 
и часть кода к ней:
Код C#
1
2
3
4
5
6
7
8
9
10
11
 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.Request.Params["id"] == "1")
            { ... }
            if (this.Request.Params["id"] == "2")
            { ... }
            ................
        }
    }
 
Суть первого вопроса в том, как избежать обновления всей MasterPage, когда, пользуясь элементами вертикального меню "VertLeftPanel", я переключаюсь между дочерними для моей MasterPage страрницами? (т.е., происходит следующее: когда я выбираю тот или иной пункт меню, содержимое моего ContentPlaceHolder1 меняется на соответствующий контент, но при этом обновляется вся страница MasterPage, общее содержимое которой всё равно не меняется, как и не должно).

Суть второго вопроса, как мне добиться, чтобы в дочерних страницах я мог писать скриптовые блоки? Потому как на данный момент я получаю следующее браузерное сообщение об ощибке:


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

Ошибка источника:
Строка 2:
Строка 3: <script language="javascript" type="text/javascript">
Строка 4: </script>

Исходный файл: /Default.aspx Строка: 4

Последний раз редактировалось Памирыч; 25.01.2012 в 19:18.
varb вне форума
Старый 24.01.2012, 18:51   #4
sau
Форумчанин
 
Аватар для sau
 
Регистрация: 22.07.2011
Адрес: Москва
Сообщений: 1,259
Репутация: 637 (507)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

1. Либо iframe, либо ajax.
2. Скрипт нельзя располагать за пределами <asp:Content/> (как и все остальное)
sau на форуме
Старый 24.01.2012, 18:59  [ТС]   #5
varb
Новичок
 
Регистрация: 13.07.2011
Сообщений: 19
Репутация: 1 (1)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

Цитата Сообщение от sau Посмотреть сообщение
1. Либо iframe, либо ajax.
2. Скрипт нельзя располагать за пределами <asp:Content/> (как и все остальное)
За второе большое спасибо.

А вот с первым немного не ясно. Что такое <iframe> мне известно. А что вы позразумеваете под ajax - технологию или же непосредственно jQuery-функцию .ajax() ?
Извините, возможно за тупой вопрос.
varb вне форума
Старый 24.01.2012, 19:05   #6
sau
Форумчанин
 
Аватар для sau
 
Регистрация: 22.07.2011
Адрес: Москва
Сообщений: 1,259
Репутация: 637 (507)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

1. http://www.w3.org/TR/html4/present/frames.html
2. Подразумеваю технологию , а реализация это уж как вам привычнее, можно от мелкософта раз уж пишем на asp net-е
http://msdn.microsoft.com/ru-ru/library/bb398874.aspx
sau на форуме
Старый 24.01.2012, 19:12  [ТС]   #7
varb
Новичок
 
Регистрация: 13.07.2011
Сообщений: 19
Репутация: 1 (1)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

Цитата Сообщение от sau Посмотреть сообщение
1. http://www.w3.org/TR/html4/present/frames.html
2. Подразумеваю технологию , а реализация это уж как вам привычнее, можно от мелкософта раз уж пишем на asp net-е
http://msdn.microsoft.com/ru-ru/library/bb398874.aspx
Ясно, но в описании моего MasterPage я же и использую UpdatePanel. Вот только в неё я запихнул контейнер для контента (что не помогло и это меня беспокоит):

Код HTML
1
2
3
4
5
6
7
8
9
10
11
 
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel runat="server" ID="updPanel">
    <ContentTemplate>
    <div id="ContextPanel" style="... overflow:auto">
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </ContentTemplate>
    </asp:UpdatePanel>
 
varb вне форума
Старый 24.01.2012, 19:19   #8
sau
Форумчанин
 
Аватар для sau
 
Регистрация: 22.07.2011
Адрес: Москва
Сообщений: 1,259
Репутация: 637 (507)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

Ну так просто UpdatePanel не будет срабатывать, если постбэк исходит от элементов за ее пределами ( а меню как я понял в UpdatePanel не входит), нужно тригер тогда указать, или само меню тоже обернуть в UpdatePanel (тогда они обнавляются синхронно)
sau на форуме
Старый 25.01.2012, 16:29  [ТС]   #9
varb
Новичок
 
Регистрация: 13.07.2011
Сообщений: 19
Репутация: 1 (1)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

Добрый день!

Не прошло и суток, как походу реализации возникают всё новые проблемы.
Одной из таких проблем является ошибка, которую мне выдает браузер...

Код HTML
1
2
3
4
 
Сведения об исключении: System.InvalidOperationException: Не удалось найти элемент управления 
с идентификатором "current" для триггера в UpdatePanel 'updPanel'.
 
...когда в UpdatePanel я добавляю триггеры на элементы моей боковой вертикальной панели:

Код HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Элементы вертикальной панели:
 
    <div id="VertLeftPanel">
        <div id="menu4">
            <ul>
                <li><a id="current" href="Default.aspx?id=1">Important Dates</a></li>
                <li><a id="PrCom" href="#">Program Committee</a></li>
                <li><a id="LstPart" href="Participants.html">List of Participants</a></li>
                <li><a id="Schedule" href="Schedule.html">Conference Schedule</a></li>
                <li><a id="Accomod" href="Accomodation.html">Accomodation</a></li>
                ..................................................................................................
            </ul>
        </div>
    </div>
 
Код HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
UpdatePanel с контейнером и триггерами на каждый пункт вертикального меню:
 
<asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel runat="server" ID="updPanel">
    <ContentTemplate>
    <div id="ContextPanel" style="left:202px; bottom: 0; position:absolute; background-color:#111159; background-image:url(../Images/Blue-Dragon.png); background-repeat:repeat-x; float:left; width:88%; height:83%; overflow:auto">
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="current" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="PrCom" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="LstPart" EventName="Click" />
        ..................................................................................................
    </Triggers>
    </asp:UpdatePanel>
 
Как мне можно сделать, чтобы списковые элементы(<li>) выступали в роли триггеров?
(в сети я нашел только привязку <asp:...> элементов (ещё были примеры с пользовательскими элементами посредством регистрации их как триггеров: ScriptManager1.RegisterAsyncPostBackControl(WebUserControl1);) и больше ничего).
varb вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 25.01.2012, 18:41   #10
sau
Форумчанин
 
Аватар для sau
 
Регистрация: 22.07.2011
Адрес: Москва
Сообщений: 1,259
Репутация: 637 (507)
По умолчанию Re: Открытие html-страницы непосредственно в <asp:Content>

1. У тебя элементы меню делают GET запросы, тут смысла в UpdatePanel-и нету.
2. Панель и тригеры работают только на PostBack события серверных элементов.

Можно обновлять панель JS скриптом посылая постбэк, но в твоем случае , как уже сказал в пункте.1, нету смысла в UpdatePanel-и,
да и *html страницы ну могут наследовать контент *.master страницы.

Для твоего варианта меню (если другой вариант организации не катит) только iframe подойдет, т.к иначе даже если ajax запрос сделать, нужно будет удалять лишние элементы у полученного документа (head,body и т.п) иначе результирующий документ будет невалидным.
sau на форуме
Ответ Создать новую тему

Похожие темы
Тема Автор
Web-мастеринг Пользоваться XML или "вытаскивать" данные непосредственно со страницы?
Может и банальный вопрос, но все же. Сегодня слушал длительный спор, по поводу использования API различных ресурсов и их XML. Идея первая: Нужно использовать API и XML, т.к. это надежно и представляет собой "красивое" решение задачи. Идея вторая: Зачем "париться" с первой идеей, когда можно...
resource2008
JavaScript копирование текста из html страницы на другую html страницу
есть сайт http://www.aztec.ru/index.php. там в 334 335 и 336 строчках кода идет статистика онлайн. <center><font class="option"><b> Статистика сервера</b></font></center><br><p align="CENTER">Сейчас онлайн: 1402<br>Альянс: 648 Орда: 754 GM: 3<br>Максимум онлайн: 2025 было 9/02/2009 в...
Fazotron
PHP для начинающих Несмотря того что я поставил <META content='text/html; charset=UTF-8' http-equiv=Content-Type>, в броузере она всеровно меняется.
Несмотря того что я поставил <META content='text/html; charset=UTF-8' http-equiv=Content-Type>, в броузере она всеровно меняется.
torsh
Web-мастеринг Превью html-страницы на другой html-странице
Собственно сабж. Можно ли?
Dimitr
Visual Basic Возможноли использование java апплетов непосредственно в VB без использования WebBrouser и html?
Возможноли использование java апплетов непосредственно в VB без использования WebBrouser и html. Возможно есть какой либо конторол для этого. Подскажите если кто знает. Если у кого есть пример, будет вообще отлично. Заранее благодарен Сергей.
Turko Sergey
Опции темы

Текущее время: 21:30. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика