【发布时间】:2016-06-04 04:26:14
【问题描述】:
我正在使用 ASP.NET MVC,我有一个带有多个复选框控件(大约 200 个)的搜索表单,我使用 GET 请求发送此表单,因为我需要用户能够共享他们的搜索条件。问题是 MVC 为复选框生成了两次查询字符串参数(一次用于true,一次用于false)并且我的查询字符串很长(大约 7000 个字符),IIS 也阻止了我的查询太长的请求细绳。我找到了一种方法来告诉 IIS 使用本教程允许如此长的查询字符串值:HTTP 400 - Bad Request (Request Header too long)。如果我将我的应用程序上传到共享主机上,我将无法访问机器注册表,所以这个问题完全阻止了我。你有没有遇到过这样的问题,如果 - 你是如何解决的?谢谢!
【问题讨论】:
-
200 个复选框?那还能用吗?似乎您需要找到另一种发送数据的方法 - 可能是一串 0 和 1 表示选中或未选中的内容,并在复选框上强制执行特定顺序?但是 200 个控件似乎只是一个无法使用的混乱。
-
感谢您的回答,@mrunion。我实际上一直在考虑这个想法,但是如果我自己附加查询字符串,方法是使用 jQuery 附加到表单的提交事件,然后使用 window.location 重定向...,模型绑定器将停止绑定我的视图模型的属性,在控制器操作中指定为参数(无论我填写什么表单,视图模型属性始终具有默认值)。 PS。原来我“只有”96 个复选框
-
您没有显示视图代码,但我假设您使用
@Html.CheckBoxFor()生成 2 个输入 -<input type="checkbox" ... value="True" />和<input type="hidden" ... value="False" />您可以手动创建创建 html 但发送那么多值无论如何,使用 GET 方法是个坏主意。
标签: c# asp.net-mvc checkbox