使用ASP.Net Core MVC
该网站包含多个包含酒店的下拉菜单,一旦用户选择酒店,Ajax呼叫将返回所选酒店的酒店客房。用户可以选择多达10家酒店+酒店房间组合,因此每个酒店和酒店房间的标准都在一个单独的局部视图中。
当我从其中一个局部视图中选择一家酒店时,所有酒店下拉都会转移到同一家酒店。
我认为这是我的javascript中的内容,所以我注释掉了所有相关的javascript,除了获取酒店的电话。这是我的代码:
部分视图
@model Cfv3.Models.Vacation.SelectHotelRoom
<select class="hotel-dropdown" name="hotel"></select>
<select class="hotelroom-dropdown" name="hotel"></select>
调用视图
<div class="form-horizontal">
@for (int i = 0; i < Model.IncludedHotels.Count; i++)
{
@Html.Partial("_PossibleHotelRoom", Model.IncludedHotels[i])
<hr/>
}
</div>
加载Ajax后加载酒店
$.get('GetHotels', function (data) {
//console.log(data);
$.each(data, function (index, value) {
//console.log(value.id + " " + value.name)
$('<option>').val(value.id).text(value.name).appendTo('.hotel-dropdown');
});
});
答案 0 :(得分:0)
在jquery中使用last()。
$.get('GetHotels', function (data) {
//console.log(data);
$.each(data, function (index, value) {
//console.log(value.id + " " + value.name)
$('<option>').val(value.id).text(value.name).appendTo('.hotel-dropdown').last();
});
});
修改:这只是解决当前问题的一种解决方案。我相信你会根据不同的要求提供许多替代解决方案。
答案 1 :(得分:0)
我终于找到了一个解决方案,它不是最干净的,但它确实有效。 在局部视图中,我从两个选择器中删除了名称,然后根据传入的模型ID创建了一个id。
batch_size: 32
虽然我没有询问控制第二次下拉菜单,但它有一个非常类似的问题,所以我修改了ajax调用如下:
@model Cfv3.Models.Vacation.SelectHotelRoom
@{
var localhotelid = Model.Id + "hotel";
var localhotelroomid = localhotelid + "room";
}
<select class="hotel-dropdown" id=@localhotelid></select>
<select class="hotelroom-dropdown" id="@localhotelroomid"></select>
我确信有一种更清洁的方式,但它有效。