Этот код используется для передачи List<String> методом RedirectToAction:
public List<String> ListOfBrandNames(string id)
{
var result = db.Items.Where(x => x.Category.Name.Equals(id)).Select(x => x.BrandID).ToList();
var ListOfBrands = db.Brands.Where(t => result.Contains(t.BrandID)).ToList();
List<String> BrandNames = ListOfBrands.Select(f => f.Name.ToString()).ToList();
return RedirectToAction("BrandsOfACategory", new { brands = BrandNames });
}
Метод RedirectToAction выдает эту ошибку:
Cannot implicitly convert type 'System.Web.Mvc.RedirectToRootResult' to 'System.Collection.Generic.List'
2 ответа даны в предоставленном вами списке. Оба подтверждают друг друга, поэтому я реализовал и проверил, но получил эту ошибку: Server Error in '/' Application. The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. Requested URL: /Home/ListOfBrandNames Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3282.0 в браузере. Пожалуйста, удалите дубликат





Вы используете неправильный тип возврата в методе действия, поскольку RedirectToAction требует типа возврата ActionResult вместо List<string>, поскольку RedirectToRouteResult унаследован от ActionResult.
Обновлять:
Вам необходимо сериализовать список в строку JSON, чтобы передать его плавно (с библиотекой Newtonsoft.Json), поэтому метод целевого действия должен использовать параметр string. Вот правильная настройка для отправки списка брендов другому методу действия:
public ActionResult ListOfBrandNames(string id)
{
var result = db.Items.Where(x => x.Category.Name.Equals(id)).Select(x => x.BrandID).ToList();
var ListOfBrands = db.Brands.Where(t => result.Contains(t.BrandID)).ToList();
return RedirectToAction("BrandsOfACategory", new { brands = JsonConvert.SerializeObject(ListOfBrands) });
}
И действие целевого контроллера должно выглядеть так:
[HttpGet]
public ActionResult BrandsOfACategory(string brands)
{
var listOfBrands = JsonConvert.DeserializeObject<List<Brand>>(brands);
List<string> BrandNames = listOfBrands.Select(f => f.Name.ToString()).ToList();
// do something and return view
}
Ссылка:
Как передать список в Redirecttoaction
Выдача исключения: Message: "Self referencing loop detected for property 'Brand' with type 'System.Data.Entity.DynamicProxies.Brand_6F41EA48F10B0AC41C001572E51DD1493029140C74DC2BC1D4D6FFE059AB59EC'. Path '[0].Items[0]'." string в строке return RedirectToAction("BrandsOfACategory", new { brands = JsonConvert.SerializeObject(ListOfBrands) }); в первом коде метода действия, который вы указали выше.
Попробуйте с кодом ниже,
public List<String> ListOfBrandNames(string id)
{
var result = db.Items.Where(x => x.Category.Name.Equals(id)).Select(x => x.BrandID).ToList();
var ListOfBrands = db.Brands.Where(t => result.Contains(t.BrandID)).ToList();
List<String> BrandNames = ListOfBrands.Select(f => f.Name.ToString()).ToList();
TempData["Brands"]=BrandNames;
return RedirectToAction("BrandsOfACategory");
}
После этого вы можете получить данные из TempData в список строк в методе «BrandsOfACategory».
Возможный дубликат Невозможно неявно преобразовать тип System.Web.Mvc.RedirectToRouteResult в System.Web.Mvc.JsonResult