C# ASP.NET MVC复选框表单获取长查询字符串

C# ASP.NET MVC复选框表单获取长查询字符串,c#,asp.net-mvc,checkbox,C#,Asp.net Mvc,Checkbox,我使用ASP.NET MVC,我有一个带有多个复选框控件的搜索表单(大约200个),我使用GET请求发送此表单,因为我需要用户能够共享他们的搜索条件。问题是MVC为复选框生成了两次查询字符串参数(一次用于true,一次用于false),我的查询字符串很长(大约7000个字符),IIS也会因为查询字符串太长而阻止我的请求。我找到了一种方法,通过使用本教程告诉IIS允许如此长的查询字符串值:。如果我在共享主机上上传我的应用程序,我将无法访问计算机注册表,所以这个问题完全阻止了我。您是否遇到过这样的问

我使用ASP.NET MVC,我有一个带有多个复选框控件的搜索表单(大约200个),我使用GET请求发送此表单,因为我需要用户能够共享他们的搜索条件。问题是MVC为复选框生成了两次查询字符串参数(一次用于
true
,一次用于
false
),我的查询字符串很长(大约7000个字符),IIS也会因为查询字符串太长而阻止我的请求。我找到了一种方法,通过使用本教程告诉IIS允许如此长的查询字符串值:。如果我在共享主机上上传我的应用程序,我将无法访问计算机注册表,所以这个问题完全阻止了我。您是否遇到过这样的问题?如果-您是如何解决的?谢谢

如果你坚持要有那么多的复选框,而从用户体验的角度来看,这些复选框并不理想,那么我就会这样做

首先,我将表单操作切换为POST请求,这样您就不再有一个巨大的GET请求

将值绑定到简单模型,然后序列化并将序列化的模型存储到具有唯一标识符的数据库中。然后,将用户重定向到GET请求中只有唯一标识符的结果。然后,您将能够从数据库中快速获取搜索条件,并将其反序列化并返回搜索结果


这意味着他们将能够共享结果,而无需进行大量冗长的查询

200个复选框?那还有用吗?似乎您需要找到另一种发送数据的方式——可能是一个0和1的字符串,指示什么是选中的或未选中的,并在复选框上强制执行特定的顺序?但是200个控件看起来就像是一团乱麻。谢谢你的回答,@union先生。实际上我一直在考虑这个想法,但是如果我自己通过使用jQuery附加表单的提交事件,然后使用window.location…重定向来附加查询字符串,那么模型绑定器将停止绑定视图模型的属性,该属性在控制器操作中指定为参数(无论我在表单中填写什么,视图模型属性总是有默认值)。PS.结果我只有96个复选框您没有显示视图代码,但我假设您使用的是
@Html.CheckBoxFor()
生成两个输入—一个
,您可以手动创建html,但向GET方法发送那么多值是个坏主意。