【问题标题】:Sending large amount of data from view to controller in asp.net在asp.net中将大量数据从视图发送到控制器
【发布时间】:2020-12-12 19:18:10
【问题描述】:

更具体地说,让我解释一下我遇到了什么。 我试图将数据列表从视图提交到控制器。我能够成功提交一些数据而没有任何问题。但是,当数据超过 250 项或更多的列表时,问题就出现了。当我单击提交按钮时,它会在调试时传递一个 NULL 值。我的代码没有错误,因为我已经毫无问题地向控制器提交了 100 个项目的列表。我想我必须指定一些东西,以便它也会发送大量列表。 在这里,我没有使用 ajax 或任何 javascript 代码来提交表单。我正在使用 post 请求将其直接提交给控制器。

我在下面发布了一些我的代码的 sn-p 以更准确地描述它。

查看

    <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,因为它可以告诉你绑定出了什么问题
  • 检查最大内容长度设置stackoverflow.com/questions/3853767/…
  • 我认为如果开始使用分页会更好。您只会发送您的页面可以处理的行数。
  • 不确定 .NET Core 的等效项是什么,但 ASP.NET(在 IIS 上)一直有最大请求大小限制和“最大字段”限制(不记得实际上是什么调用,但它处理给定请求中有多少表单值)。您是否只发送行 ID(这是您示例中唯一的隐藏字段)?
  • 假设您在 IIS 上运行,您可能会达到此处描述的限制:stackoverflow.com/questions/8684049/… - IIS 每个请求默认最多 500 个表单字段,您的 250 行将提交 750 个。

标签: c# asp.net asp.net-mvc forms asp.net-core


【解决方案1】:

请在 Startup#ConfigureServices 中尝试此操作

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

参考:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.features.formoptions

【讨论】:

  • @Tieson T.:感谢您添加参考。 BR
  • 没问题。我刚刚更新了它——最好指向官方的 MS 文档。
猜你喜欢
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多