将值传递给模态,然后传递给控制器​​的函数

时间:2018-03-20 17:53:27

标签: c# html asp.net-mvc razor modal-dialog

这一切都以循环开始,让它缩短:

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

我无法理解......我会非常高兴任何解释。

1 个答案:

答案 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并将其分配给隐藏字段。然后以编程方式显示模态。