Привет есть код. Контролер
public class HomeController : Controller
{
public ActionResult Index()
{
using (StreamReader reader = new StreamReader("db.json"))
{
string json = reader.ReadToEnd();
var items = JsonConvert.DeserializeObject<List<SelectListItem>>(json);
ViewBag.List = items;
}
return View();
}
}
Вьюшка
@{
ViewBag.Title = "Лаба";
var listItems = new List<SelectListItem>();
foreach (var c in ViewBag.List)
{
listItems.Add(new SelectListItem { Text = c.Id, Value = c.Name });
}
}
<div class="row">
<div class="col-md-4">
@Html.DropDownList("Name", listItems)
</div>
</div>
Так вот вылетает эксепш
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ""System.Web.Mvc.SelectListItem" не содержит определения для "Id""
показывает что ViewBag
не пустой имеет 3 значения
вот JSON
[
{
"Id": 0,
"Name": "Саша"
},
{
"Id": 1,
"Name": "Даша"
},
{
"Id": 2,
"Name": "Маша"
}
]
что я не так делаю?
Проблема у Вас в том что Вы пытаетесь свою структуру (Id
, Name
) привести к SelectListItem
, что конечно же не есть хорошо в Вашем случае. И соответсвенно Вы получаете RuntimeBinderException
потому что Вы попытались десеариализовать Вашу структуру к SelectListItem
который не содержить свойства/поля Id
и Name
.
Хот фикс вот:
var items = JsonConvert.DeserializeObject<List<dynamic>>(json);
ViewBag.List = items;
return View();
А по хорошему создайте класс, который може представлять Вашу структуру, например:
public class Entity // тут какое-то смысловое имя структуры.
{
public int Id { get; set; }
public string Name { get; set; }
}
и код в контролере будет таким:
var items = JsonConvert.DeserializeObject<List<Entity>>(json);
ViewBag.List = items;
return View();
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Правильно ли я понял, что данная конструкция создает область видимости(работы) переменной variableИ после закрытия скобки вызывает Dispose() переменной?
При создании базы использую для авторизации IdentityВ файле по умолчанию IdentityModels
Помогите пожалуйста разобраться как реализовать сортировку по популярности (отзывам) из двух таблицПри том чтобы отображались все записи...