Я изучаю MVC и для этого разрабатываю "умный форум". Как я могу получить значение из модели напрямую, без итерации foreach, когда данные представляют собой «одну строку»?
@model IEnumerable<WebApplication28.ModelsFromDb.ArgomentiViewModel>
@foreach (var item in Model)
{
<dl class = "dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.NomeArea)
</dt>
<dd>
@Html.DisplayFor(modelItem => item.NomeArea)
</dd>
}





Это будет беспорядочный код, если вы сохраните тип модели как IEnumerable<>. Поэтому я предлагаю вам изменить это одним из двух способов.
Если вы знаете, что всегда будет один элемент, зачем вам вообще нужно перечисляемое? Просто удалите его и обязательно верните базовый объект из контроллера:
@model WebApplication28.ModelsFromDb.ArgomentiViewModel
Если вам приходится иметь дело с коллекциями, держу пари, это более конкретный тип, который вы возвращаете из контроллера. Если это список, вы можете использовать IList<>, который имеет гораздо больше операций и который вы можете проиндексировать:
@model IList<WebApplication28.ModelsFromDb.ArgomentiViewModel>
...
@Html.DisplayNameFor(model => model[0].NomeArea)
Ваш ActionMethod должен будет возвращать только одну строку, а не IEnumerable. Используйте метод SingleOrDefault() для вашего объекта. Верните это, на ваш взгляд, чтобы убедиться, что вы собираетесь вернуть не более одной строки.
@model WebApplication28.ModelsFromDb.ArgomentiViewModel
<dl class = "dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.NomeArea)
</dt>
<dd>
@Html.DisplayFor(modelItem => item.NomeArea)
</dd>
</dl>
Если ваши данные представляют собой одну строку, вы не должны передавать
IEnumerableв представление.