как получить предыдущее состояние по нажатию кнопки в asp.mvc - PullRequest
0 голосов
/ 08 января 2019

У меня есть представление, в котором я хочу показать текстовое поле и кнопку для сохранения и редактирования таблицы базы данных, если в комментарии к идентификатору таблицы указано значение NULL, я хочу показать текстовое поле для ввода комментария, и если комментарий есть в таблице, тогда показать комментарий, но когда пользователь нажимает вторую (редактировать) кнопку, я хочу, чтобы текстовое поле и кнопка снова появлялись в этом месте, я ставлю условие if, чтобы проверить, равен ли мой столбец таблицы нулю, затем показываю текстовое поле и кнопку для ввода данных в этот столбец и у меня есть вторая кнопка, чтобы вернуть текстовое поле и кнопки с текстом комментария.

Мой код здесь

  @if (item.Comments == null)
                    {
                    <div class="form-inline comments">
                        <textarea class="form-control commentText" placeholder="Enter Your Comment"></textarea>&nbsp;
                        <button type="submit" data-cid="@item.RoomId" class="btn btn-primary save"><i class="fas fa-save h3"></i></button>&nbsp;
                        <button type="submit" data-eid="@item.RoomId" class="btn btn-secondary edit"><i class="fas fa-edit h3"></i></button>&nbsp;
                    </div>
                    }
                    else
                    {
                    <div class="commentText">
                        @Html.DisplayFor(modelItem => item.Comments)
                    </div>
                    }

 $('.save').click(function () {
        var cmt = $('.commentText').val();
        $.post("@Url.Action("AddComment", "ReceptionHk")", { id: $(this).data("id"), newComment: cmt });
    });

    $('.edit').click(function () {
        $('.comments').show();
        $('.commentText').hide();
    });

Метод моего контроллера

public void AddComment(int id, string newComment)
{
    var roomcmt = db.SingleOrDefault<Room>(id);
    if (ModelState.IsValid)
    {
        roomcmt.Comments = newComment;
        var r = db.Update(roomcmt);
    }

}

Как снова отобразить текстовое поле и две кнопки при нажатии кнопки редактирования

Пожалуйста, помогите мне с этим

1 Ответ

0 голосов
/ 08 января 2019

Измените свой код следующим образом:

A : удалите строку @if (item.Comments == null) и заставьте view отобразить раздел создания по умолчанию.

B : Для создания / редактирования комментариев, ваш код должен выглядеть примерно так:

<div class="form-inline comments">
      <textarea class="form-control commentText" placeholder="Enter Your Comment"></textarea>&nbsp;
      <button type="submit" data-cid="@item.RoomId" class="btn btn-primary save"><i class="fas fa-save h3"></i></button>&nbsp;
</div>

C : а затем добавить проверку области в список как:

@if(item.Comments!=null)
{
  <display your list here>
}

Для отображения comments вместо статического отображения comments используйте таблицу и выполните цикл foreach для комментариев в таблице, чтобы создать строки с двумя столбцами в ней как Comment, Edit , Пример:

<table>
     @foreach(var comment in item.Comments)
     {
       <tr>
           <td>@comment.Text</td>
           <td><button data-id="@comment.RoomId">Edit</button></td>
       </tr>
     }
</table>

и при нажатии кнопки Редактировать вызовите функцию javascript, которая вызовет получение этого комментария и заполнит поля редактирования, после чего вы сможете позже использовать его для обновления.

Ваш взгляд будет выглядеть примерно так:

<div class="form-inline comments">
      <textarea class="form-control commentText" placeholder="Enter Your Comment"></textarea>&nbsp;
      <button type="submit" data-cid="@item.RoomId" class="btn btn-primary save"><i class="fas fa-save h3"></i></button>&nbsp;
</div>

@if(item.Comments!=null)
{
    <table>
     @foreach(var comment in item.Comments)
     {
       <tr>
           <td>@comment.Text</td>
           <td><button data-id="@comment.RoomId">Edit</button></td>
       </tr>
     }
    </table>
}

Rest : реализовать функцию JS для получения и создания комментариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...