我的第一个视图模型

时间:2011-08-28 19:33:59

标签: asp.net-mvc-3

我一直在玩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 个答案:

答案 0 :(得分:2)

您的代码似乎正确无误。您已经定义了一个视图模型,其中包含视图所需的必要属性,将其填充到控制器中并传递给此强类型视图。

我对PopulateTeamsDropDownList方法中的以下行只做了一个小的评论:

_Base.DataRepository.GetTeams();

我希望你已经用接口(或抽象类)抽象了这个存储库,并使用了DI来为你的控制器注入一些具体的实现。这将削弱控制器与数据访问方式之间的耦合,并简化单独测试应用程序不同层的单元。