Я использую страницы Razor для своего проекта на dotnet core 2.1, и приложение, похоже, неправильно связывает мои свойства, простые типы (int и string) связываются правильно, но не список сложных типов, этоЕсть ли обходной путь для этого?
мой обработчик страницы выглядит следующим образом:
public async Task<IActionResult> OnGetDTResponseAsync(DataTableOptions options) {// Some Code}
Когда я перехожу через мой отладчик, все свойства простого типа для «Опции DataTableOptions» хорошо заполнены, нокомплексный тип возвращает ноль.
моя модель выглядит следующим образом:
public class DataTableOptions
{
public string Draw { get; set; }
public int Start { get; set; }
public int Length { get; set; }
public List<DataTableColumnOrder> Order { get; set; }
public List<DataTableColumn> Columns { get; set; }
public DataTableColumnSearch Search { get; set; }
public List<string> Params { get; set; }
public DataTableOptions() { }
public class DataTableColumn
{
public string Data { get; set; }
public string Name { get; set; }
public bool Searchable { get; set; }
public bool Orderable { get; set; }
public DataTableColumnSearch Search { get; set; }
public DataTableColumn() { }
}
public class DataTableColumnSearch
{
public string Value { get; set; }
public bool Regex { get; set; }
public DataTableColumnSearch() { }
}
public class DataTableColumnOrder
{
public int Column { get; set; }
public string Dir { get; set; }
public DataTableColumnOrder() { }
}
}
При попытке решить эту проблему я попытался использовать
public async Task<IActionResult> OnGetDTResponseAsync(List<Dictionary<string, string>> columns)
в своем обработчике страницы на местеиз свойства столбцов DataTableOptions, чтобы я мог вручную связать свойства с моим классом: я получил полный список моих столбцов с привязанными к нему свойствами, за исключением свойства DataTableColumnSearch объекта DataTableColumn, который также является сложным типом, который вышел как нуль.
public async Task<IActionResult> OnGetDTResponseAsync(List<Dictionary<string, object>> columns)
тоже не работает.
Вот так выглядит запрос в fiddler:
GET / CMS / Index? Обработчик = DTResponse & draw = 1 & столбцы% 5B0% 5D% 5Bdata% 5D = id & столбцы% 5B0% 5D% 5Bname% 5D = & columns% 5B0% 5D% 5Bsearchable% 5D = false & columns% 5B0% 5D% 5Borderable% 5D = ложные и столбцы% 5B0% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5B0% 5D% 5Bsearch% 5D% 5Bregex% 5D = ложь и столбцы% 5B1% 5D% 5Bdata% 5D = имя и столбцы% 5B1% 5D% 5Bname% 5D= & столбцы% 5B1% 5D% 5Bsearchable% 5D = истинные и столбцы% 5B1% 5D% 5Borderable% 5D = истинные и столбцы% 5B1% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5B1% 5D% 5Bsearch% 5D% 5Bregex% 5D = ложь и столбцы% 5В2% 5D% 5Bdata% 5D = webPage.name & колонны% 5В2% 5D% 5Bname% 5D = & столбцы% 5В2% 5D% 5Bsearchable% 5D = верно и столбцы% 5В2% 5D% 5Borderable% 5D = верно и столбцы% 5В2% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5В2% 5D% 5Bsearch% 5D% 5Bregex% 5D = ложь и столбцы% 5B3% 5D% 5Bdata% 5D = значение & колонны% 5B3% 5D% 5Bname% 5D = & столбцы% 5B3% 5D% 5Bsearchable% 5D = верно и столбцы% 5B3% 5D% 5Borderable% 5D = верно и столбцы% 5B3% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5B3% 5D% 5Bsearch% 5D% 5Bregex% 5D = ложь и столбцы% 5B4% 5D% 5Bdata% 5D = contentType.name & столбцы% 5B4% 5D% 5Bname% 5D = & столбцы% 5B4% 5D% 5Bsearchable% 5D = истина &колонны% 5B4% 5D% 5Borderable% 5D = истинные и столбцы% 5B4% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5B4% 5D% 5Bsearch% 5D% 5Bregex% 5D = ложные и столбцы% 5B5% 5D% 5Bdata% 5D = & столбцы%5B5% 5D% 5Bname% 5D = & колонны% 5B5% 5D% 5Bsearchable% 5D = ложь и столбцы% 5B5% 5D% 5Borderable% 5D = ложные и столбцы% 5B5% 5D% 5Bsearch% 5D% 5Bvalue% 5D = & столбцы% 5B5% 5D% 5Bsearch%5D% 5Bregex% 5D = false & order% 5B0% 5D% 5Bcolumn% 5D = 2 & order% 5B0% 5D% 5Bdir% 5D = asc & start = 0 & length = 10 & search% 5Bvalue% 5D = & search% 5Bregex% 5D = false & _ = 1545122652329 HTTP*