Чтобы быть более конкретным, позвольте мне объяснить, с чем я столкнулся. Я пытался отправить список данных из представления в контроллер. Я смог успешно отправить некоторые данные без каких-либо проблем. Но проблема возникает, когда данных больше, чем список из 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)
{
////
}
Можете ли вы сказать мне, что не так с моим кодом, пожалуйста
проверьте настройки максимальной длины контента stackoverflow.com/questions/3853767/…
Думаю, было бы лучше, если бы начали использовать пейджинг. Вы бы отправили только то количество строк, которое может обработать ваша страница.
@BobVale Я проверил это. Проблем с привязкой нет. Если бы это было, это не должно было сработать для некоторых
@coder_b Я не думаю, что максимальная длина контента является проблемой, потому что в той же программе я могу загрузить файл размером 80 МБ. Поскольку данные 500 LIST намного меньше, чем даже файл размером 1 МБ, я не думаю, что это проблема.
Не уверен, что такое эквиваленты .NET Core, но ASP.NET (в IIS) всегда имел ограничение на максимальный размер запроса и ограничение на «максимальное количество полей» (не могу вспомнить, как оно на самом деле называется, но имеет дело с тем, сколько значения формы находятся в данном запросе). Вы отправляете только идентификатор строки (это единственное скрытое поле в вашем примере)?
Нет, у меня всего 3 скрытых поля, включая идентификатор строки и еще 2 скрытых поля.
Итак, три скрытых поля в строке?
Да, у меня есть три скрытых поля в строке.
Предполагая, что вы работаете в IIS, вы, вероятно, достигаете предела, описанного здесь: stackoverflow.com/questions/8684049/… - IIS по умолчанию имеет максимум 500 полей формы на запрос, и ваши 250 строк будут отправлять 750 .
Да, ты прав. В этом проблема. использую сервер IIS. Я прошел по ссылке, которую вы разместили выше. Я понял причину. Я думаю, что решение вышеуказанного вопроса будет применяться на asp.net 4.0 и ниже. у меня ASP.NET CORE(5.0). На моей версии не работает. Но когда я применяю ответ от Roar S. Он работает. Спасибо за помощь.
Пожалуйста, попробуйте это в 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
Без проблем. Я только что обновил его - возможно, лучше указать официальные документы MS.
Можете ли вы проверить Modelstate, потому что это может дать вам представление о том, что пошло не так с привязкой