0

Tは、たとえばCustomerまたはCustomerViewModelである必要がありますか?

Mvc名前空間にバインドされたアノテーションはListViewModelにあるため、実際にはCustomerオブジェクトを渡すことができます。どう思いますか?

public class ListViewModel<T>
{
        [Required(ErrorMessage="No item selected.")]
        public int[] SelectedIds { get; set; }
        public IEnumerable<T> DisplayList { get; set; }        
}

アップデート

[HttpGet]
 public ActionResult Open()
 {
    IEnumerable<Testplan> testplans = _testplanDataProvider.GetTestplans();
    OpenTestplanListViewModel viewModel = new OpenTestplanListViewModel(testplans);         
    return PartialView(viewModel);
 }

public class OpenTestplanListViewModel
{
        public OpenTestplanListViewModel(IEnumerable<Testplan> testplans)
        {
           var testplanViewModels = testplans.Select(t => new TestplanViewModel
           {
             Name = string.Format("{0}-{1}-{2}-{3}", t.Release.Name, t.Template.Name, t.CreatedAt, t.CreatedBy),
              TestplanId = t.TestplanId,
           });

           DisplayList = testplanViewModels;
        }

        [Required(ErrorMessage = "No item selected.")]
        public int[] SelectedIds { get; set; }
        public string Name { get; set; }
        public IEnumerable<TestplanViewModel> DisplayList { get; private set; } 
}

public class TestplanViewModel
{
        public int TestplanId { get; set; }     
        public string Name { get; set; }           
}

 public class Testplan
 {
        public int TestplanId { get; set; }
        public int TemplateId { get; set; }
        public int ReleaseId { get; set; }
        public string CreatedBy { get; set; }       
        public DateTime CreatedAt { get; set; }       
        public Template Template { get; set; }
        public Release Release { get; set; } 
 }
4

1 に答える 1

0

T理想的にはビューモデルである必要があります。ドメインモデルを参照するビューモデルを持つことは、実際のモデルではなく、ある種のハイブリッドビューモデルです。ただし、この特定のケースでは、ドメインモデルがビューモデルとまったく同じになると思われる場合は、それを維持することもできます。

于 2012-08-09T16:04:17.317 に答える