Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Всплывающее окно на форуме / 1 сообщений из 1, страница 1 из 1
27.02.2014, 17:05
    #38574481
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Всплывающее окно на форуме
Добрый день уважаемые форумчане. Помогите пожалуйста со следующим вопросом.
Пытаюсь организовать иерархические комментарии к статье и хотелось бы организовать всплытие формы для сообщения, при нажатии ответить:
Примерно как это выглядит:
Добавить сообщение
ник
сообщение
ответить
ник2
сообщение2
ответить
ник3
ответ на сообщение2
ответить
До этого использовал просто переход по гиперссылке на View с пустой формой, но это как говориться не очень хорошо(
после некоторых мучений вот что получилось:
Код: 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.
106.
107.
108.
109.
110.
@using _10012014.Models
@model IEnumerable<_10012014.Models.Comment>

@{
    ViewBag.Title = "FullPage";
}

<div class="name">@Html.ActionLink("Добавить сообщение", "NewComment", new { id = 0 })</div>
<ul>
    @foreach (var comment in Model.Where(p => p.IDBaseComment == 0))
    {
        <li>
            <div class="name">@comment.NameAuthor</div>
            <div class="line">
                @comment.TextComment
            </div>
            <div class="answer">@*@Html.ActionLink("Ответить", "NewComment", new { id = comment.ID })*@
                Ответит
            </div>
            @*поле пад каментарый *@
            @using (Html.BeginForm("NewComment", "Main", FormMethod.Post, new { @class = "form" }))
            {
                <label for="NameAuthor">Имя</label>
                <div>
                    <input id="NameAuthor" class="text-box single-line" type="text" value="" name="NameAuthor" data-val-required="Введите свое имя" data-val="true">
                    <span style="color: red">
                        <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="NameAuthor"></span>
                    </span>
                </div>
                <label for="TextComment">Текст сообщения</label>
                <div>
                    <textarea id="TextComment" class="text-box multi-line" name="TextComment" data-val-required="Введите свое текст сообщения" data-val="true"></textarea>
                    <span style="color: red">
                        <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="TextComment"></span>
                    </span>
                </div>
               <input id="IDBaseComment" type="hidden" value=@comment.ID name="IDBaseComment" data-val-number="Значением поля IDBaseComment должно быть число." data-val="true">
                <input type="submit" value="Опубликовать">
            }

            @if (Model.Count(p => p.IDBaseComment == comment.ID) > 0)
            {
                @:<ul>
        }

            @RenderMenuItem(comment)@*чамусь падсвечваецца чырвоным(((*@
       
        @if (Model.Count(p => p.IDBaseComment == comment.ID) > 0)
        {
            @:</ul>
                                                                                                                    }

        </li>
    }
</ul>


@helper RenderMenuItem(Comment mi)
{
    foreach (var comment in Model.Where(p => p.IDBaseComment == mi.ID))
    {
 
    @:<li>
<div class="name" >
@comment.NameAuthor</div>
                <div class="line">
                    @comment.TextComment     
                    </div>@*
                     <div>@Html.ActionLink("Ответить", "NewComment", new { id = comment.ID })</div>*@
                     <div class="answer">
                Ответит
            </div>
@*поле пад каментарый *@
            using (Html.BeginForm("NewComment", "Main", FormMethod.Post, new { @class = "form" }))
            {
                 <label for="NameAuthor">Имя</label>
                <div>
                    <input id="NameAuthor" class="text-box single-line" type="text" value="" name="NameAuthor" data-val-required="Введите свое имя" data-val="true">
                    <span style="color: red">
                        <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="NameAuthor"></span>
                    </span>
                </div>
                <label for="TextComment">Текст сообщения</label>
                <div>
                    <textarea id="TextComment" class="text-box multi-line" name="TextComment" data-val-required="Введите свое текст сообщения" data-val="true"></textarea>
                    <span style="color: red">
                        <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="TextComment"></span>
                    </span>
                </div>
               <input id="IDBaseComment" type="hidden" value=@comment.ID name="IDBaseComment" data-val-number="Значением поля IDBaseComment должно быть число." data-val="true">
                <input type="submit" value="Опубликовать">
            }
        
        if (Model.Count(p => p.IDBaseComment == comment.ID) > 0)
        {
           @:<ul>  
        }
        
       @RenderMenuItem(comment)

        if (Model.Count(p => p.IDBaseComment == comment.ID) > 0)
        {
          @:</ul>
      }
        else
        {
          @:</li>
                                          }
    }
}



и jquery файл
Код: javascript
1.
2.
3.
4.
5.
6.
$(document).ready(function () {
    $('.answer').click(function (eventObject) {
        $(this).css('color', 'red');
        $(this).next().css('visibility', 'visible').css('height', '100%');
    });
});


Но данный метод приводит к возникновению большого количества ругани в VS из-за повторяющихся id, да и что греха таить выглядит очень топорно:(
Подскажите как сделать более правильно).
Стою только на начале пути познания и надеюсь на ваше понимание:)
За ранее спасибо)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Всплывающее окно на форуме / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]