硬编码下拉列表(用于创建和更新数据)

时间:2012-07-11 17:05:17

标签: c# asp.net-mvc-3 entity-framework html-helper

我有这样的代码:

当您编辑UserProfile(使用相应的CRUD(Controlers + Views))时,您会看到SexType的下拉列表(您也可以使用其他CRUD编辑)并且将对应于SexType表。

public class UserProfile{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int SexTypeId { get; set; }
public virtual SexType SexType { get; set; }

public class SexType
{
    public int SexTypeId { get; set; }
    public string SexTypeDescription { get; set; }
    public virtual ICollection<UserProfile> UserProfiles { get; set; }
}

 public class UserProfileDBContext : DbContext //This creates the database according to the model
{
    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<SexType> SexType { get; set; }
}

我想要的: 我想要一个更简单的事情,但我无法做到:

我希望在我的模型(或控制器)中对sextype进行硬编码(男/女)。 不在数据库中。 我不想要任何数据库,只是每当我在“UserProfile”上创建或更新记录时,只需使用“男/女”选项可视化下拉列表。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

您可以在视图中执行此操作:

@Html.DropDownList("SexType", 
    new[] { 
        new SelectListItem() { Text="Male", Value = "M" },  
        new SelectListItem() { Text="Female", Value = "F" }
    }
);

答案 1 :(得分:0)

UserProfile ViewModel添加新属性以保存列表ot SexTypes

public class UserProfile{
  public int Id { get; set; }
  public string Name { get; set; }
  public string Surname { get; set; }
  public int SexTypeId { get; set; }
  public IEnumerable<SelectListItem> SexTypes { get; set; }
}

在您的GET操作方法中,您可以填写它并返回视图

public ActionResult Create()
{
  var model=new UserProfile();
  model.SexTypes = new[]
  {
     new SelectListItem { Value = "M", Text = "Male" },
     new SelectListItem { Value = "F", Text = "FeMale" },         
  }; 
  return View(model);
}

并且在您的视图中与UserProfile ViewModel

有很强的约束力
@Html.DropDownListFor(x => x.SexTypeId, new SelectList(Model.SexTypes,
                                                  "Value","Text"), "Select..")