Отправка большого объема данных из представления в контроллер в asp.net

Чтобы быть более конкретным, позвольте мне объяснить, с чем я столкнулся. Я пытался отправить список данных из представления в контроллер. Я смог успешно отправить некоторые данные без каких-либо проблем. Но проблема возникает, когда данных больше, чем список из 250 элементов и более. Когда я нажимаю кнопку отправки, она передает значение NULL при отладке. В моем коде нет ошибки, потому что я без проблем передал контроллеру список из 100 элементов. Я предполагаю, что мне нужно будет что-то указать, чтобы Он также отправил большое количество списков. Здесь я не использую ajax или какой-либо код javascript для отправки формы. Я отправляю его непосредственно контроллеру, используя почтовый запрос.

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

Вид

    <form method = "post" action = "SubmitList">
                <div class = "row"> 
                    <div class = "col-md-12" style = "padding-top:1%">
<input type = "submit" value = "PASS" class = "btn btn-primary" style = "float:right;" />
                        <div class = "box-body">
                            <table id = "#example1" class = "table table-bordered table-striped">
                                <thead>
                                    <tr>
                                        <th>No</th>
                                        <th>Name</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    @{
                                        int i = 1;
                                    }
                                    @for (int j = 0; j < Model.Count(); j++)
                                    {
                                        <tr>
                                            <td>@Html.Raw(i++)</td>
                                            @Html.HiddenFor(item => item[j].Id, new { htmlAttributes = new { @class = "form-control" } })
                                            <td>
                                                @Html.DisplayFor(item => item[j].FullName) 
                                            </td>
                                        </tr>
                                    }
                                </tbody>
                                <tfoot>
                                </tfoot>
                            </table>
                        </div>
                    </div>
                </div>
            </form>

Контроллер

[AuthorizedAction]
[HttpPost] 
public async Task<IActionResult> SubmitList(List<Student> students)
    {
////
    }

Можете ли вы сказать мне, что не так с моим кодом, пожалуйста

Можете ли вы проверить Modelstate, потому что это может дать вам представление о том, что пошло не так с привязкой

Bob Vale 12.12.2020 20:20

проверьте настройки максимальной длины контента stackoverflow.com/questions/3853767/…

coder_b 12.12.2020 20:25

Думаю, было бы лучше, если бы начали использовать пейджинг. Вы бы отправили только то количество строк, которое может обработать ваша страница.

Paul Sinnema 12.12.2020 20:48

@BobVale Я проверил это. Проблем с привязкой нет. Если бы это было, это не должно было сработать для некоторых

Abdulhakim Zeinu 12.12.2020 21:00

@coder_b Я не думаю, что максимальная длина контента является проблемой, потому что в той же программе я могу загрузить файл размером 80 МБ. Поскольку данные 500 LIST намного меньше, чем даже файл размером 1 МБ, я не думаю, что это проблема.

Abdulhakim Zeinu 12.12.2020 21:04

Не уверен, что такое эквиваленты .NET Core, но ASP.NET (в IIS) всегда имел ограничение на максимальный размер запроса и ограничение на «максимальное количество полей» (не могу вспомнить, как оно на самом деле называется, но имеет дело с тем, сколько значения формы находятся в данном запросе). Вы отправляете только идентификатор строки (это единственное скрытое поле в вашем примере)?

Tieson T. 12.12.2020 21:47

Нет, у меня всего 3 скрытых поля, включая идентификатор строки и еще 2 скрытых поля.

Abdulhakim Zeinu 12.12.2020 21:54

Итак, три скрытых поля в строке?

Tieson T. 12.12.2020 21:55

Да, у меня есть три скрытых поля в строке.

Abdulhakim Zeinu 12.12.2020 22:00

Предполагая, что вы работаете в IIS, вы, вероятно, достигаете предела, описанного здесь: stackoverflow.com/questions/8684049/… - IIS по умолчанию имеет максимум 500 полей формы на запрос, и ваши 250 строк будут отправлять 750 .

Tieson T. 12.12.2020 22:05

Да, ты прав. В этом проблема. использую сервер IIS. Я прошел по ссылке, которую вы разместили выше. Я понял причину. Я думаю, что решение вышеуказанного вопроса будет применяться на asp.net 4.0 и ниже. у меня ASP.NET CORE(5.0). На моей версии не работает. Но когда я применяю ответ от Roar S. Он работает. Спасибо за помощь.

Abdulhakim Zeinu 13.12.2020 09:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
11
1 081
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, попробуйте это в Startup#ConfigureServices

services.Configure<FormOptions>(options => options.ValueCountLimit = 1000); // you may want to adjust this limit

Ссылка: https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.features.formoptions

@Tieson T.: Спасибо за добавление ссылки. BR

Roar S. 12.12.2020 22:14

Без проблем. Я только что обновил его - возможно, лучше указать официальные документы MS.

Tieson T. 12.12.2020 22:17

Другие вопросы по теме