как получить модель "значения" без foreach над ним? - PullRequest
0 голосов
/ 08 марта 2019

Я изучаю 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>
}

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Ваш 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>
0 голосов
/ 08 марта 2019

Это будет грязный код, если вы сохраните тип вашей модели как IEnumerable<>.Поэтому я предлагаю вам изменить это одним из двух способов.

Если вы знаете, что всегда будет один элемент, зачем вам вообще нужен перечисляемый?Просто удалите его и убедитесь, что вы возвращаете базовый объект из контроллера:

@model WebApplication28.ModelsFromDb.ArgomentiViewModel

Если вам приходится иметь дело с коллекциями, держу пари, это более конкретный тип, который вы возвращаете из контроллера.Если это список, вы можете использовать IList<>, который имеет гораздо больше операций и который можно индексировать:

@model IList<WebApplication28.ModelsFromDb.ArgomentiViewModel>
...
@Html.DisplayNameFor(model => model[0].NomeArea)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...