Проблемы с передачей списка идентификаторов из одного вида в другой контроллер - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь передать список внутренних идентификаторов из одного представления в другое по нажатию кнопки.Я могу поразить контроллер, но его прохождение обнуляется.

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, у меня есть список внутри списка.(Типы бизнеса внутри бизнеса, так что многие-много-много отношений)

Может кто-нибудь сказать мне, где я иду не так?

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете попробовать получить идентификатор из html и затем передать его контроллеру.

    <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 () { вы можете получить значение идентификатора item_Id, проверив сгенерированный html в веб-браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...