ASP.net MVC3 сущности, не знаю, как считать - PullRequest
1 голос
/ 24 марта 2012

У меня есть 2 таблицы, 1 со странами, 1 со штатами. В таблице состояний есть столбец с населением.

Я использую сущности и создал список государств для стран

public class TblCountries
{
//Entities for my table country
...
public List<tblStates> States { get; set; }
}

Так что теперь я могу, например, перечислить все государства, которые принадлежат стране.

Теперь я хочу посчитать население, чтобы я мог показать население всей страны.

Я пытался использовать на мой взгляд

@foreach (var item in Model.Countries) {
 @Html.DisplayFor(modelItem => item.States.Count<population>)
}

Но это не работает, кто-нибудь знает, как это сделать?

Спасибо заранее!

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Вам нужно использовать функцию Linq Sum

Я не проверял этот код, но это будет что-то вроде этого:

@foreach (var item in Model.Countries) {
 var states = item.states;
 states.Select(state => state.population).Sum()
}

Мнение Дмитрияо том, как сохранить логику на среднем уровне - это разумный совет;однако эти линии размываются с помощью .NET MVC и шаблона модели представления (что вызывает много недовольства у пуристов).

Я рекомендую, если вы можете изолировать свою логику в классе позади ваш контроллер, затем сделайте это.Если это невозможно для данного представления, не стесняйтесь добавлять логику к вашему представлению.В конце концов, именно для этого и нужен синтаксис.

Примером времени, которое вам может понадобиться для этого, является ситуация, когда у вас есть общая модель представления, доставленная во многие представления, но вам нужно несколько определенных логических настроек вопределенные взгляды.

Удачи!

1 голос
/ 24 марта 2012

Вы не должны вставлять какую-либо логику в представление. При программировании в MVC, ваш контроллер должен подавать на стол необходимые данные. Роль представления заключается в отображении только данных, оно не имеет ничего общего с подсчетом / перечислением / добавлением / удалением и т. Д.

Итак, для вашей конкретной проблемы я бы пошел так. Прежде всего, создайте ViewModel, которая будет содержать страны и их население. Затем заполните эту модель в действии контроллера (здесь идут все соединения с базой данных, подсчет и создание экземпляров). После этого вы передаете эту модель представления для просмотра и пишете что-то вроде этого:

@foreach (var item in Model.CountriesPopulations)
{
    @Html.DisplayFor(modelItem => item.Value)
}

, где СтраныПопуляции могут быть словарями (содержит названия стран и количество населения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...