Действие контроллера с несколькими параметрами - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь понять, что Я думаю - это проблема привязки модели в моем проекте 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 связаны с элементами управления флажками.

У меня ошибка, если член bool 'ShowAll' изменен на TRUE, а затем попытаться перейти на другую страницу.Как показано на скриншоте ниже, часть URL-адреса параметра ShowAll содержит два значения типа bool («ShowAll = true, false»):

enter image description here

, что, конечно, приводит к ошибке синтаксического анализа ('FormatException: String не была распознана как допустимое логическое значение').

Что здесь происходит?Это происходит только в том случае, если параметр ShowAll переключен на TRUE.Это проблема маршрутизации, потому что она не соответствует шаблону маршрута по умолчанию?Или это проблема с ModelBinder?Я просто пытаюсь понять, что происходит, чтобы принять правильные меры.Мы будем благодарны за любую помощь ...

Обновление

Теперь это проблема # 3246 ('Ошибка привязки модели с логическими значениями') наРепозиторий asp / Home GitHub (изначально поднятый мной как проблема # 1711 в репозитории dotnet / Core).

Ответы [ 2 ]

0 голосов
/ 13 июля 2018

Эта проблема была исследована командой aspnet / Mvc под вопросом # 8043 .

Нет проблем с ModelBinder. Проблема была вызвана моим кодом пейджера, который создает URL. Пожалуйста, используйте ссылку , чтобы просмотреть полный разговор, который содержит подробное объяснение от команды aspnet / Mvc и пример кода, предоставленного мной.

0 голосов
/ 16 мая 2018

Сообщение об ошибке довольно ясно ... ShowAll=true,false недопустимо как логическое значение.

Связыватель модели получает следующую строку "true,false" из строки запроса для этого параметра и затем пытается проанализировать его как логическое значение, которое, как вы уже видели, завершится с ошибкой.

Похоже на попытку

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

Должен работать только с ShowAll=true

...