Добавление сервисов пользователю с использованием нескольких вариантов выбора в MVC3 - PullRequest
0 голосов
/ 10 марта 2011

У меня проблема, и я не знаю с чего начать, так как я новичок в MVC.У меня есть три таблицы:

  • Пользователь (ИД пользователя, имя пользователя и т. Д ...) Это определяет пользователей.
  • Сервис (ServiceID, ServiceName и т. Д.) Это определяет сервисы.
  • Лицензии (ID, UserID, ServiceID и т. Д.) Сопоставляет услуги пользователю.

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

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

У меня есть все способы для добавления и удаления лицензий, но мне нужно знать, как реализовать это в моем контроллере и просматривать.

Заранее спасибо.

1 Ответ

2 голосов
/ 16 марта 2011

Прежде всего, определите ViewModel

public class EditUserViewModel
{
    public User User { get; set; }
    public IList<License> Licenses { get; set; }
    public IList<Service> Services { get; set; }
}

Модель представления - это просто вспомогательный класс, который содержит все, что вам нужно для отображения представления.Затем в вашем действии:

public ActionResult EditUser(int id)
{
    var userViewModel = new EditUserViewModel
    {
        User = // Get user from db
        Licenses = // Get licenses for that user
        Services = // Getservies the user in entitled to   
    }

    return View(userViewModel); 
}

Затем сделайте ваше представление типизированным с помощью EditUserViewModel для модели:

@model EditUserViewModel

@* //Some html or whatever here *@

@* //Access your model properties as follows *@
@Model.User
@Model.Licenses
@Model.Service    

Вы можете повторно использовать класс EditUserViewModel для других представлений, UserDetails, дляпример.В этом случае вы можете захотеть переименовать и избавиться от префикса «Редактировать».

ОБНОВЛЕНИЕ, чтобы уточнить вопрос в комментариях: Правило большого пальца: Делайте ваши модели зрения маленькими, тупыми и простыми.Никаких методов, функциональности или интеллекта, просто пара свойств, которые помогут вам в процессе отображения.Вы можете использовать модели представлений только на очень похожих видах, как в случае с представлениями EditUser и DisplayUser.У вас будет другая модель вида для DisplayServices вида и т. Д.

...