У меня есть Bootstrap Tabs menu в View
. Панели для вкладок 1 и tab2 имеют два частичных вида pv1 и pv2, каждый из которых имеет Select tag helper. Как известно, атрибут атрибута тега создает атрибут id и name с тем же значением, что и в приведенной выше статье. Теперь, когда я нажимаю на вкладку 1, pv1 визуализируется с помощью специального помощника тега. И, когда я нажимаю на tab2, pv2 визуализируется с помощью помощника select tag. Оба помощника тега одинаковы (список лет), но годы выбраны для разных целей в tab1 и tab2 соответственно. Задача: Какой бы год не выбран в pv1 select tag helper, данные в pv2 отфильтрованы на основе этого года, а не фильтрации на год, который пользователь выбирает на pv2 select tag helper. Вопрос: Почему? и как я могу решить проблему? Как проверить: когда я нажимаю кнопку GO
в pv2, код Ajax ниже всегда выдает предупреждение с годом, выбранным в помощнике тега pv2.Два частичных вида с тем же помощником тега select не работают
Обращаем Ваше внимание, что Реальный сценарий имеет более двух вкладок, а частичный вид на каждой панели вкладок имеет тот же помощник тега select и ту же кнопку GO
. Я использую JQuery's Event Delegation, чтобы упростить мой код и не писать отдельный вызов Ajax для каждой кнопки GO
. Более того, в моем ViewModel
- который передается в представление - я хочу использовать только одно свойство для летнего списка и выбранного года.
ViewModel:
public int entityid {get; set;}
...
public SelectList lstYears {get; set;}
public int SelectedYear {get; set;}
...
Просмотр:
<ul id="myTabstripID" class="nav nav-tabs">
<li id="AddprojTab"><a data-toggle="tab" href="#menu1">Menu 1</a></li>
<li id="UpdPorjTab"><a data-toggle="tab" href="#menu2">Menu 2</a></li>
</ul>
<div class="tab-content">
<div id="menuAP" class="tab-pane in active">
<div class="AddTabContenData"></div>
</div>
<div id="menuUP" class="tab-pane in active">
<div class="UpdTabContenData"></div>
</div>
</div>
Частичное View1:
...some html here
Select Order Year: <select asp-for="SelectedYear" asp-items="@Model.lstYears"></select><button type="button" class="btnGO btn btn-default">GO</button>
...some html here to display data based on year selected in pv1
Частичное View2:
...some html here
Select Delivery Year: <select asp-for="SelectedYear" asp-items="@Model.lstYears"></select><button type="button" class="btnGO btn btn-default">GO</button>
...some html here to display data based on year selected in pv2
Ajax код:
$(document).ready(function() {
$('.tab-content').on('click', '.btnGO', function (event) {
var btnVal = $(this).val();
var selectedYearVal = $('#SelectedYear').val();
alert(selectedYearVal);
$.ajax({
...
...
});
});
});
Он работал как шарм. В моем случае оказалось, что уже существующий класс 'tab-pane' в Bootstrap Tabstrip. И в моем случае, поскольку панель вкладок является контейнером для частичного, я просто использовал 'tab-pane' в вашем коде, и это сработало. Спасибо за предоставление необходимой, но детали. – nam
Итак, два класса 'tab-content' и' tab-pane' из Bootstrap оказались удобными для меня в этом конкретном примере и в вашем коде. – nam