Все начинается с цикла, давайте сделаем его коротким:
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 Передача значения в модальное окно
Я ничего не мог понять ... Буду безмерно рад любому объяснению.





Вы не можете установить CompanysId в модальном HTML, потому что один и тот же модальный код будет использоваться для нескольких тегов привязки <a data-target = "#AddRoom" ... </a>. Вы должны установить CompanyId в скрытом поле в событии щелчка тега привязки. Быстрое и грязное решение может быть:
<a data-target = "#AddRoom" onclick = "$('#CompanysId').val('@building.id');" data-toggle = "modal" >Add room for this building</a>
Хотя приведенный выше код должен работать, я предлагаю вам привязать функцию к событию щелчка тега привязки. В этой функции прочтите CompanyId из тега привязки и назначьте его скрытому полю. Затем программно покажите модальное окно.
Я хотел бы знать, почему грязное решение такое грязное, казалось намного более простым. Я не понимаю, насколько это опасно.