NikFaraday
@NikFaraday
Student full-stack Developer

Можно ли используя синтаксис Razor получить значение атрибутов cshtml страницы?

Здравствуйте!

У меня есть куча блоков с комментариями, перед удалением которых вылазит модальное окно с просьбой подтверждения удаления. Модальное окно используется одно, что бы снизить нагрузку на страницу. На модалке есть кнопка подтверждения удаления, который через Url.Action отправляет Get запрос в соответствующий экшен. Как мне показать кнопке, какой из 100500 комментариев я хочу удалить, что бы передать Id этого комментария?
Сами же комментарии я вывожу через цикл, с помощью небольших махинаций, через JS, я перекидывать в модалку сам комментарий, что бы пользователь видел, к чему производится запрос об удалении. Как мне получить какой-то Id, имя или любую другую информацию об этом комментарии, что бы я мог это отправить на сервер для удаления?
Стоит учесть, что модальное окно находится НЕ в цикле, что бы само модальное окно не выводить 100500 раз. Код прилагается ниже:

<h3 class="text-center">Client notes</h3>
<div style="margin-bottom: 5px">
    <textarea id="note" class="form-control" rows="6"></textarea>
    <input type="button" value="Append" id="submitBtn" class="btn btn-block btn-primary" />
</div>

<div style="border: 1px solid #ddd;">
    @foreach(var item in Model.ClientNotes)
    {
        @if(item.DeletedOn == null)
        {
            <div class="container">
                <i id="note-@item.Id">@item.Note</i>
                <br />
                <a id="btn-@item.Id" data-target="#delete-note-modal" data-toggle="modal" href="#"><b>Delete</b></a>
            </div>
            <hr style="margin-top: 10px;" />
        }
    }
</div>

<div class="modal fade" id="delete-note-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <div class="row">
                    <h5 class="modal-title col-lg-12">Delete this note?</h5>
                </div>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
            </div>
            <div class="model-body">
                <textarea id="note-modal" rows="6" class="form-control" readonly="readonly"></textarea>
            </div>
            <div class="modal-footer">
                @*<a href="@Url.Action("Delete", "Note", new { @id = ?????????????????????????????? })"><b>Delete</b></a>*@
            </div>
        </div>
    </div>
</div>
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
NikFaraday
@NikFaraday Автор вопроса
Student full-stack Developer
Сделал по другому - через ajax, что бы не использовать Url.Action. Ниже привёл часть скрипта:

buttons[i].onclick = () => {
        let buttonId = buttons[i].id.split('-')[1];
        let note = document.getElementById('note-' + buttonId).innerHTML;
        noteModal.innerHTML = note;

        $("#delete-note-btn").on('click', () => {
            let data = {
                NoteId: buttonId,
                ClientId: @Model.ClientId,
            };

            let jsonData = JSON.stringify(data);

            $.ajax({
                url: '@Url.Action("Delete", "Note")',
                method: 'post',
                data: jsonData,
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                success: (response) => {
                    document.getElementById('modal-close-button').click();
                    setTimeout(() => {
                        location.reload();
                    }, 500);
                },
                error: (response) => {
                    // Autoredirect to error view
                },
            });
        });
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы