Показать комментарии под сообщениями ASP.net Webmatrix

Я создаю веб-сайт, где будут сообщения и соответствующие комментарии.

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

Проблема в том, что когда я показываю комментарии в отдельном div (прямо под div постов на том же уровне) с помощью цикла foreach, комментарии отображаются под всеми остальными постами. Я пытался использовать $(thisenter code here).sibling и $(this).children() и т. д., но это не сработало.

В jquery я скрываю div комментария на document.ready и показываю при нажатии на сообщение.

Вот фрагмент кода:

@foreach(var row in selectposts)
{
  <div id ="posts">@row.posts</div>
  @foreach(var row in selectcomments)
  {
  <div id ="comment">@row.comments</div>
  }
}

person CodeXTop    schedule 15.09.2012    source источник
comment
Похоже, вы выводите все сообщения одновременно в <div id ="posts">@row.posts</div> , возможно, вам нужно сначала пройтись по этому циклу.   -  person Hazem Salama    schedule 16.09.2012
comment
сообщения зацикливаются, и сообщения с идентификатором div выводят разные сообщения на странице. Проблема в том, что я просто хочу показать все соответствующие комментарии под постом и, следовательно, использовать другой цикл. но это каким-то образом показывает комментарий из первого сообщения для всех остальных сообщений. Надеюсь, это объясняет сценарий. Спасибо за ваш ответ.   -  person CodeXTop    schedule 16.09.2012
comment
Я не эксперт Razor, но похоже, что ваш код должен работать. Возможно, это связано с тем, что вы скрываете/показываете с помощью jQuery. Вы пытались вывести страницу без jquery, чтобы увидеть, правильно ли она выводится под соответствующим сообщением?   -  person Hazem Salama    schedule 16.09.2012
comment
Он показывает комментарий под всеми другими сообщениями, потому что он выполняет второй цикл for для всех доступных сообщений. Вы правы, это как-то связано с jquery, но я пробовал $(this), $(this).children и $(this).siblings, чтобы показать соответствующие комментарии, но, к сожалению, безрезультатно. Спасибо.   -  person CodeXTop    schedule 16.09.2012
comment
Если вы можете опубликовать свой код jquery, это было бы полезно   -  person Hazem Salama    schedule 16.09.2012


Ответы (1)


Попробуйте что-то вроде этого:

@{
    var db = Database.Open("MyDatabase");
    var postsQuery = "SELECT * FROM Posts";
    var commentsQuery = "SELECT * FROM Comments WHERE PostId = @0";
}

@foreach(var post in db.Query(postsQuery)){
    <div class="[email protected]">@post.PostContent</div>
    @foreach(var comment in db.Query(commentsQuery, post.Id)){
        <div class="[email protected]">@comment.CommentContent</div>
    }
}

Я только что набрал это прямо в SO, но это должно быть где-то рядом.

jQuery работает, как и ожидалось, в вашем OP, поскольку вы используете один и тот же идентификатор div. В этом примере каждый пост div будет иметь уникальный идентификатор (например, post127), поэтому jQuery может ссылаться на них по отдельности.

person Steve Lydford    schedule 16.09.2012