Моя первая модель просмотра - PullRequest
1 голос
/ 28 августа 2011

Я играл с MVC 3 и смотрел на заполнение выпадающих списков.Я видел несколько примеров онлайн, которые рекомендуют использовать модели представлений, так что вот моя первая попытка.Кажется, мой код работает, но кто-нибудь может сказать мне, если это правильный способ сделать это?

Моя модель:

public class ContactGP
{
    public int TeamID { get; set; }

    [Required(ErrorMessage = "Please select a Team Name")]
    [DataType(DataType.Text)]
    [DisplayName("Team Name")]
    public string TeamName { get; set; }
}

Моя модель просмотра:

public class ContactGPViewModel
{
    public string SelectedTeamID { get; set; }
    public IEnumerable<Team> Teams { get; set; }
}

Мой контроллер:

public IEnumerable<Team> PopulateTeamsDropDownList()
    {
        IEnumerable<Team> lstTeams = _Base.DataRepository.GetTeams();

        return lstTeams;
    }

    public ActionResult ContactGP()
    {
        var model = new ContactGPViewModel
        {
            Teams = PopulateTeamsDropDownList()
        };

        return View(model);
    }

И мой взгляд:

<p>
    @Html.DropDownListFor(
        x => x.SelectedTeamID, 
        new SelectList(Model.Teams, "TeamID", "TeamName")
    )
</p>

1 Ответ

2 голосов
/ 28 августа 2011

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

У меня есть только незначительное замечание на следующей строке внутри PopulateTeamsDropDownListМетод:

_Base.DataRepository.GetTeams();

Я надеюсь, что вы абстрагировали этот репозиторий с интерфейсами (или абстрактными классами) и использовали DI для внедрения какой-то конкретной реализации в ваш контроллер.Это ослабит связь между вашим контроллером и способом доступа к данным и упростит модульное тестирование различных уровней вашего приложения в отдельности.

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