ASP.Net MVC 3 ViewModel Аннотации данных

Я занимаюсь разработкой веб-приложения ASP.Net MVC 3 с Entity Framework 4.1, и меня немного смущает использование аннотаций данных для проверки формы. Я всегда возвращаю ViewModel в View, а не передаю фактический объект, поскольку понимаю, что это плохая практика. Например:

public class ViewModelTeam
{
    public Team Team { get; set; }
}

Мой взгляд может иметь что-то вроде этого

@model UI.ViewModels.ViewModelTeam

    @Html.HiddenFor(model => model.Team.teamID)


    <div class="editor-label">
        @Html.LabelFor(model => model.Team.description)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Team.description)
        @Html.ValidationMessageFor(model => model.Team.description)
    </div>

Чтобы проверить это представление, я создал аннотации данных в частичном классе, например

[MetadataType(typeof(TeamMetaData))]
public partial class Team
{
    public class TeamMetaData
    {
        [DisplayName("Team Name")]
        [Required(ErrorMessage = "Please enter a Team Name")]
        public object description { get; set; }

И тогда в моем создании контроллера у меня есть это

[HttpPost]
    public ActionResult Create(Team team)
    {
        if (ModelState.IsValid)
        {
           //Add team and redirect
        }

          //Got this far then errors have happened
          //Add Model State Errors


        ViewModelTeam viewModel = new ViewModelTeam
        {
            Team = team            
        };

        return View(viewModel);
    }

Теперь это работает нормально, однако, чем больше я читаю о ViewModel и валидации, тем больше кажется, что именно ViewModel следует проверять, потому что в конце дня именно ViewModel отображается в View , а не объект.

Поэтому я изменил свою ViewModel, чтобы выглядеть следующим образом

public class ViewModelListItem
{

    public int teamID { get; set; }

    [DisplayName("Item Name")]
    [Required(ErrorMessage = "Please enter a Team Name")]
    public string description { get; set; }

И я также изменил свой контроллер создания для этого

[HttpPost]
    public ActionResult Create(Team team)
    {
        if (ModelState.IsValid)
        {
           //Add team and redirect
        }

          //Got this far then errors have happened
          //Add Model State Errors

        ViewModelTeam viewModel = new ViewModelTeam();
     viewModel.description = team.description;

        return View(viewModel);
    }

Опять же, это работает, но я просто чувствую, что 2-й метод немного грязный или не такой эффективный при первом способе сделать это.

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

Ответы на вопрос(1)

Ваш ответ на вопрос