Модальное всплывающее окно Ajax с модальной привязкой из частичного представления

#ajax #asp.net-mvc

#ajax #asp.net-mvc

Вопрос:

Некоторое время я пытаюсь найти решение, но не смог его найти… У меня есть частичное представление, которое привязано к модальному, и оно отображает данные в сетке. Что-то вроде приведенного ниже

 @model abc
@Html.Grid(Model)
{
    grid columns
    column with edit link
}
  

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

 @model pqr
<div>
   popup window with grid columns displayed in form for editing.
</div>
  

Любая помощь с примером кода очень помогла бы.

Ответ №1:

Вероятно, есть и другие способы сделать это, но я делал это раньше:

  1. Ваша ссылка для редактирования должна иметь идентификатор в качестве идентификатора, который будет передан контроллеру в качестве параметра

  2. Получить данные и передать модель частичному представлению с заполненными свойствами

     $(".YourEditLinkClass").click(function () {
       var id = $(this).attr('id');
       $.ajax({
          url: "@Url.Action("GetDataForPopUpWindow", "YourController")",
          type: "GET",
          dataType: "html",
          data: { id: id },
          success: function (data) {
              $("#modal_"   id).html(data);//target position of modal
              $('#pqr_'   id).modal('toggle');
            }
         });
    });
      

Код контроллера:

 public ActionResult GetDataForPopUpWindow(int id)
{
   using (YourDBContext)
   {
      var data = YourData;
      pqr pqrModel = new pqr();
      pqrModel.YourModelProperty = data.CorrespondingProperty;
      return PartialView("_GridPartialView", pqrModel);
   }
}
  

Ваш загрузочный модал должен иметь идентификатор, как id="pqr_@Model.Id" в частичном представлении, называемый _GridPartialView. Надеюсь, это имеет смысл.