【发布时间】:2018-05-16 07:44:08
【问题描述】:
我试图了解 我认为 是我的 ASP.NET Core 项目中的模型绑定问题。我有以下“索引”控制器操作:
[HttpGet]
public async Task<IActionResult> Index(SortFilterIndexOptions options) { ... }
SortFilterIndexOptions 是以下类中定义的四个成员:
public class SortFilterIndexOptions
{
public int SelectedBirdId { get; set; }
public bool ShowAll { get; set; }
public bool ShowInTable { get; set; }
public int page { get; set; }
}
这些使用户能够过滤分页索引页面。 bool 成员链接到复选框控件。
如果将“ShowAll”布尔成员更改为 TRUE,然后尝试导航到不同的页面,我会遇到错误。正如下面的屏幕截图所示,url 的“ShowAll”参数部分包含两个布尔值(“ShowAll=true, false”):
这当然会导致解析错误(“FormatException:字符串未被识别为有效的布尔值”)。
这里发生了什么?它仅在“ShowAll”参数切换为 TRUE 时发生。是否是路由问题,因为它不遵循默认路由模式?还是 ModelBinder 有问题?我只是想了解发生了什么,以便采取正确的行动。任何帮助将不胜感激...
更新
这现在是 asp/Home GitHub 存储库上的问题 #3246('ModelBinding error with boolean values')(最初由我在 dotnet/Core 存储库中作为问题 #1711 提出)。
【问题讨论】:
-
错误信息很清楚...
ShowAll=true,false作为布尔值无效。应该只使用ShowAll=true -
这是通过 GET 发送的表单中的复选框吗?
-
是的,我正在尝试弄清楚为什么它添加了两个布尔值。当我单击下一页按钮时。发生这种情况时 ShowAll 被切换为 true。为什么要在 url 中附加第二个“false”值?
-
@CodeCaster。它是一个 Bootstrap Toggle 控件。所以和复选框一样。在 GET 表单中
标签: c# asp.net-core asp.net-core-routing