Как направить модальное переключение данных на контроллер?

У меня есть список таблиц для формы опроса, и у каждого из них есть кнопка/ASP-действие для просмотра ответов как минимум 3 конкурентов. но мне нужно выбрать конкурентов формы опроса, используя модальный. внутри этого модального окна я должен заполнить тело флажком конкурентов, которые ответили на эту форму опроса. Как я могу нажать, чтобы направить модальное переключение данных на контроллер?

Вот мой взгляд:

 @for (int i = 0; i < Model.SurveyNames.Count; i++)
      {
        <tr>
            <td>
                @Model.SurveyNames[i].SurveyName
            </td>
            <td>
                @Model.SurveyNames[i].SurveyFor
            </td>
            <td>
                @Model.SurveyNames[i].Description
            </td>
            <td>
                @Model.SurveyNames[i].CreatedBy
            </td>
            <td>
                @Model.SurveyNames[i].Status
            </td>

            <td>
                <!-- Button trigger modal -->
                <a asp-action = "ViewCompetitors" asp-route-id = "@Model.SurveyNames[i].Id" data-toggle = "modal" data-target = "#ChooseCompetitors">View Competitors</a>
            </td>
        </tr>
}

И это мой контроллер, он должен возвращать значения модальному индексу:

public IActionResult Index(int? id)
        {
            var model = new CompetitorAnswerViewModel();
            var SurveyList = _context.MainSurvey.ToList();

             foreach (var zsurvey in SurveyList)
            {
                model.SurveyNames.Add(new survey { Id = zsurvey.Id, SurveyName = zsurvey.SurveyName, SurveyFor = zsurvey.SurveyFor,Description = zsurvey.Description,CreatedBy = zsurvey.CreatedBy,Status = zsurvey.Status}) ;
            }

            var competitorList = _context.SurveyCompetitor.ToList().Where(x => x.MainSurveyId == id);

             foreach (var competitors in competitorList)
            {
                model.CompetitorNames.Add(new Competitor { CompetitorName = competitors.CompetitorName});
            }
            return View(model);
        }

Я должен заполнить тело флажком конкурентов, которые ответили на эту форму опроса. Но он не перенаправляется на контроллер всякий раз, когда я нажимаю «Просмотреть конкурентов».

Как направить модальное переключение данных на контроллер?

просто предложение, не решит проблему. код мог бы быть намного чище, если бы вы использовали foreach вместо for в первой строке.

Neville Nazerane 08.04.2019 02:35

Привет @NevilleNazerane, всякий раз, когда я использую оператор foreach, появляется ошибка. и я использую 1 модель из 2 таблиц базы данных.

Chris May 08.04.2019 02:40
foreach (var sname in Model.SurveyNames) при использовании с @sname.SurveyName и т. д. должно работать нормально
Neville Nazerane 08.04.2019 02:49

это ваш _context dbcontext ядра ef

Neville Nazerane 08.04.2019 02:53

да. Это сработало, как вы сказали :) Спасибо! Ошибка в том, что я не вставил Model. в Model.SurveyNames. Ржу не могу.

Chris May 08.04.2019 02:57

если вы говорите о модальном загрузчике, это будет в вашем коде HTML/бритвы. вам не нужно было бы ничего нажимать на контроллер, чтобы создать его

Neville Nazerane 08.04.2019 03:17

Я хочу, чтобы идентификатор данных таблицы передал его контроллеру, чтобы отфильтровать конкурентов опроса, а затем вернуть отфильтрованные данные модальному в том же индексе.

Chris May 08.04.2019 03:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
442
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

I want the table data id to pass it to the contoller to filter the survey competitors and then return the filtered data to the modal in the same index

Вы можете поместить представление Competitors в частичное представление и отобразить его в представлении Index с помощью ajax.

1. Создайте частичный вид в Shared папке /Views/Shared/_CompetitorsPartialView.cshtml

@model YourViewModel
<div class = "col-md-12">
Your View
</div>

2. Верните отфильтрованные данные в это частичное представление.

public IActionResult ViewCompetitors(int id)
    {
        // filter logic
        return PartialView("_CompetitorsPartialView",YourViewModel);
    }

3. Используйте ajax в представлении Index.

Измените <a> на <button>:

<button id = "ViewCompetitors" onclick = "viewCompetitor(@item.CustomerId)">View Competitors</button>

Модальные и ajax:

<div class = "modal fade" id = "ChooseCompetitors" role = "dialog">
<div class = "modal-dialog">
    <!-- Modal content-->
    <div class = "modal-content">
        <div class = "modal-header">
            <h4 class = "modal-title">Modal Header</h4>
            <button type = "button" class = "close" data-dismiss = "modal">&times;</button>
        </div>
        <div class = "modal-body">
          <div id = "showresults"></div>
        </div>
        <div class = "modal-footer">
            <button type = "button" class = "btn btn-default" data-dismiss = "modal">Close</button>
        </div>
    </div>

</div>
</div>
@section Scripts{ 
<script>
    function viewCompetitor(id) {
        $.ajax({
            type: 'Get',
            url: '/Home/ViewCompetitors/' + id,//your url
            success: function (result) {
                $("#ChooseCompetitors").modal();//open modal
                $('#showresults').html(result);//populate view to modal

            }
        })
    }
</script>
}

Другие вопросы по теме