这一切都以循环开始,让它缩短:
foreach (var building in Model.CompanysBuildings)
{
<a data-target="#AddRoom" data-toggle="modal" data-id="@building.id">Add room for this building</a>
}
它使模态出现:
<div class="modal fade" id="AddRoom" tabindex="-1" role="dialog" aria-hidden="true" style="display: none;" >
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title">Confirm add up</h4>
</div>
<div class="modal-body">
How many room do you wish to add ?<br />
<input type="text" name="NumberOfRoomAdded" id="nbRoom">
<input type="hidden" name="hiddenFieldOfModal" id="CompanysId" value=" ?????? ">
</div>
<div class="modal-footer">
<button data-dismiss="modal" type="button" class="btn btn-default">cancel</button>
<button id="btnProceedAddRoom" type="button" class="btn btn-primary">Add this number of room</button>
</div>
</div>
</div>
</div>
以下是btnProceedAddRoom
点击的脚本,它将调用某个控制器中的c#函数(AddRoom,Admin):
<script>
var numberOfRooms;
var idCompany;
$('#btnProceedAddRoom').click(function () {
numberOfRooms = $("#nbRoom").val();
idCompany = $("#CompanysId").val();
$.ajax({
url: "@Url.Action("AddRoom", "Admin")",
type: $("#ViewModelForm").attr('method'),
data: $("#ViewModelForm").serialize() + "&noBloc=" + numberOfRooms + "&idCompany=" + idCompany
}).done(function (result) {
window.location.reload();
});
});
</script>
主要问题是检索模态部分中的data-id="@building.id"
...一旦我能够这样做,将它传递给脚本部分就没有问题了。我想这个属性可以有这个目的,但是如何在模态中检索data-id
?
我试图用它来解决这个问题:ASP MVC Passing value into modal window
我无法理解......我会非常高兴任何解释。
答案 0 :(得分:1)
您无法在模态html中设置CompanysId
,因为相同的模式将用于多个<a data-target="#AddRoom" ... </a>
锚标记。您必须在锚标记的click事件的隐藏字段中设置CompanyId
。一个快速而肮脏的解决方案可以是:
<a data-target="#AddRoom" onclick="$('#CompanysId').val('@building.id');" data-toggle="modal" >Add room for this building</a>
虽然上面的代码应该可行,但我建议你在锚标记的click事件中绑定一个函数。在该函数中,从锚标记中读取CompanyId
并将其分配给隐藏字段。然后以编程方式显示模态。