Условно передать данные из вмещающего представления в частичное представление - PullRequest
0 голосов
/ 17 января 2019

Мои требования

Мне нужно частично отобразить выбор выпадающего списка

  • При загрузке страницы (из контроллера) У меня есть все необходимыеданные (viewmodel) для частичного представления
  • Все частичные представления должны получать одни и те же данные из модели представления представления (cshtml)
  • При выборе значения раскрывающегося списка требуется частичное представлениеПредставление (приведенное ниже 1-4) необходимо визуализировать.

Визуализация частичного просмотра 1

@{
    Html.RenderPartial("_Dashboard", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
 }

Визуализация частичного просмотра 2

@{
   Html.RenderPartial("_Dashboard_Graph", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
 }

Рендеринг частичного просмотра 3

@{
   Html.RenderPartial("_Dashboard_Arrow", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
}

Рендеринг частичного просмотра 4

@{
   Html.RenderPartial("_Dashboard_Custom", new Dashboard.Web.Models.SignalDataViewModel { dData = Model.dData });
 }

Мой запрос

Пожалуйста, предложите, как я должен условно визуализировать частичное представление (из списка частичных представлений с той же моделью представления) в соответствии с выбором раскрывающегося списка, имея данные для частичных представлений, которые уже естьдоступно в View (cshtml-parent) ViewModel

Ответы [ 2 ]

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

Я наконец-то поработал, чтобы реализовать это.

В JavaScript для выбора раскрывающегося списка с помощью ajax-вызова я передал данные модели в контроллер, возвращающий частичное представление. В Контроллере определяется правильное частичное представление, и оно возвращает это частичное представление в виде html-данных в мой вызов ajax, который я использую для замены в требуемом (частичном представлении) div.

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

Внутри делать все это через HTML. Я бы предложил использовать javascript.

  • Имейте один div с идентификатором, таким как

    <div id="InterchangableView"></div>
    
  • Добавить событие onChange в раскрывающийся список и передать функции javascript значение раскрывающегося списка

  • В функции определите, какое это значение, и вызовите необходимый метод контроллера, такой как ниже

    if(id == 1)
    {
        var json = '{controllerParam: ' + id + '}';
    
        $.ajax({
            url:'@Url.Action("Action", "Controller")',
            type:'POST',
            data: json,
            contentType:'Application/json',
            success:fucntion(result){
                $("#InterchangableView").html(result);
            }
        });
    }
    
  • В действии контроллера, в зависимости от переданного в него результата, выполните проверку и верните правильное частичное представление таким образом.

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

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