面对将ID从一个View传递到另一个控制器的问题

问题描述 投票:0回答:1

我试图通过按钮单击将一个视图列表从一个视图传递到另一个视图。我能够击中控制器,但它传递null。

HTML:

 @foreach (var business in Model.Businesses)
                {
                    <tr>
                        <td>@business.Name</td>                        
                        <td>
                            <p>
                                @foreach (var bt in @business.BusinessTypes)
                                {
                                    @bt.Name;
                                }
                            </p>
                        </td>                      

                        <td><button type="button" id="btnCalcVS"> Calculate Validator Score</button></td>
                    </tr>
                }

jQuery的:

<script type="text/javascript">
    $(document).ready(function () {
        var businessTypeIds = [];
        $(document).on("click", "#btnCalcVS", function () {           

            $.ajax({
            type: 'POST',
                    url: '/BusinessType/Index',
                    contentType: "application/json",
                    data: JSON.stringify( @foreach (var business in Model.Businesses)
            {
                     @foreach (var bt in @business.BusinessTypes)
                     {
                        @bt.Id;
                      }
            }),                       
                success: function (data) {
                    alert("success");
                },
                    error: function (e) {
                    alert(e);

                }

            });
        });
    });
</script>

控制器:

[HttpPost]
        [Route("/BusinessType/Index")]
        public IActionResult Index([FromBody] List<int> businessTypeIds)
        {

//logic
}

如上所述,我正在击中控制器,但它具有空值。从HTML代码中可以看出,我在列表中有一个列表。 (企业内部的业务类型,因此2对多关系)

谁能告诉我哪里出错了?

list asp.net-core-mvc many-to-many
1个回答
0
投票

您可以尝试从html获取id,然后将其传递给控制器​​。

    <form method="post">
        <table class="table">
            <thead>
                <tr>
                    <th>
                        @Html.DisplayNameFor(model => model.DenniPlan2[0].Id)
                    </th>

                    <th>
                        @Html.DisplayNameFor(model => model.DenniPlan2[0].CisloZakazky)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.DenniPlan2[0].CisloProduktu)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.DenniPlan2[0].Poradi)
                    </th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model.DenniPlan2)
                {
                    <tr>
                        <td>
                            @Html.EditorFor(model => item.Id)
                        </td>

                        <td>
                            @Html.EditorFor(model => item.CisloZakazky)
                        </td>
                        <td>
                            @Html.EditorFor(model => item.CisloProduktu)
                        </td>
                        <td>
                            @Html.EditorFor(model => item.Poradi)
                        </td>
                    </tr>
                }            
            </tbody>
        </table>
        <input type="button" id="btnCalcVS" value="submit" />
    </form>

    @section Scripts{
    <script type="text/javascript">
        $(document).ready(function () {
            var businessTypeIds = [];
            $("[id=item_Id]").each(function () {
                businessTypeIds.push($(this).val());
            });
            console.log(businessTypeIds);
                $(document).on("click", "#btnCalcVS", function () {

                    $.ajax({
                        type: 'POST',
                        url: '/BusinessType/Index',
                        contentType: "application/json",
                        data: JSON.stringify(businessTypeIds),
                        success: function (data) {
                            alert("success");
                        },
                        error: function (e) {
                            alert(e);
                        }

                    });
                });
            });
    </script>
    }

对于这行$("[id=item_Id]").each(function () {,您可以通过检查Web浏览器中生成的html来获取id值item_Id

© www.soinside.com 2019 - 2024. All rights reserved.