使用asp.net mvc中的SelectList创建创建/编辑视图/操作

时间:2009-11-05 13:32:23

标签: asp.net-mvc

基本思想是你有一些具有引用类型属性的类,类似这样的

public class Person 
{
   public int Id { get; set; }
   public string Name { get; set; }
   public Country HomeCountry { get; set; }
}

public class Country 
{
   public int Id { get; set; }
   public string Name { get; set; }
}

现在,如果您需要创建一个视图来编辑人员的数据,您对姓名或ID没有任何问题,但您确实拥有国家/地区;

目前我有两个基本的解决方案

我放的动作方法中的

nr1:  ViewData["Countries"] = countryService.GetAll(); 并使用类似的东西在视图中使用它 SelectList(ViewData["Countries"], Country.Id

我将[后发布]创建(国家/地区)

nr2:创建一个PersonDto或PersonViewModel(我猜的是同样的事情)

这里我要创建(CountryVieModel countryViewModel)并且不使用ViewData

 public class PersonViewModel
     {
     Person Person { get; set; }
     public SelectList Countries { get; private set; }


     public PersonViewModel(Person person) 
     {
     Person = person;
     var countryService = container.Resolve<CountryService>();
     Countries = new SelectList(countryService.GetAll(),Person.Country);
     }

   }

但我觉得应该有比这两个更好的方法

任何人都知道最好的方法吗?

1 个答案:

答案 0 :(得分:1)

是的,nr2是最好的。