具有多个参数的控制器操作

时间:2018-05-16 07:44:09

标签: c# asp.net-core asp.net-core-routing

我想了解 我认为 是我的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;):

enter image description here

当然会导致解析错误(&#39; FormatException:String未被识别为有效的布尔值&#39;)。

这里发生了什么?它只发生在ShowAll&#39;参数切换为TRUE。它是否是路由问题,因为它不遵循默认路由模式?或者是ModelBinder的问题?我只是想了解发生了什么,所以我可以采取正确的行动。任何帮助将不胜感激......

更新

现在问题是{/ 3}}(&#39;模型绑定错误,带有布尔值&#39;)在asp / Home GitHub存储库(最初由我作为问题#3246在dotnet / Core上引发库)。

2 个答案:

答案 0 :(得分:2)

错误信息非常清楚...... ShowAll=true,false无法作为布尔值。

模型绑定器从该参数的查询字符串中接收以下字符串"true,false",然后尝试将其解析为布尔值,这将失败,如您所见。

与尝试类似

bool value = bool.Parse("true,false");

应该只使用ShowAll=true

答案 1 :(得分:0)

aspnet / Mvc小组在问题#8043下对此问题进行了调查。

ModelBinder没有问题。问题是由我的寻呼机代码(构造网址)引起的。请使用link查看完整的对话,其中包含aspnet / Mvc团队的详细解释以及我提供的示例代码。

相关问题