我想了解 我认为 是我的ASP.NET核心项目中的模型绑定问题。我有以下'索引'控制器动作:
[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成员链接到复选框控件。
如果&#39; ShowAll&#39;我有错。 bool成员更改为TRUE,然后尝试导航到其他页面。如下面的屏幕截图所示,显示了ShowAll&#39;然后,url的参数部分包含两个bool值(&#39; ShowAll = true,false&#39;):
当然会导致解析错误(&#39; FormatException:String未被识别为有效的布尔值&#39;)。
这里发生了什么?它只发生在ShowAll&#39;参数切换为TRUE。它是否是路由问题,因为它不遵循默认路由模式?或者是ModelBinder的问题?我只是想了解发生了什么,所以我可以采取正确的行动。任何帮助将不胜感激......
更新
现在问题是{/ 3}}(&#39;模型绑定错误,带有布尔值&#39;)在asp / Home GitHub存储库(最初由我作为问题#3246在dotnet / Core上引发库)。
答案 0 :(得分:2)
错误信息非常清楚...... ShowAll=true,false
无法作为布尔值。
模型绑定器从该参数的查询字符串中接收以下字符串"true,false"
,然后尝试将其解析为布尔值,这将失败,如您所见。
与尝试类似
bool value = bool.Parse("true,false");
应该只使用ShowAll=true
答案 1 :(得分:0)