我拼命寻求自定义项目注册页面的帮助。基于可用文档,我更新了身份模型,帐户视图模型,除了我对性别或国家/地区代码的下拉列表手动编码的事实外,所有这些都可以。我无法弄清楚如何使用实体框架从数据库中填充下拉列表。因此,如果有人可以快速介绍如何实现这一目标,我将非常感谢。我想这应该很简单,但现在确实尝试了几天。
为了简单地保持维护选项,我想使用SQL上的一个表格,该表供该下拉列表。让我们以"性别"为例。因此,我已经继续前进并更新了帐户视图模型,并在底部添加了以下内容:
public class GenderList
{
public int ID { get; set; }
public string Gender { get; set; }
}
之后,我转到了身份模型并添加了'公共DBSET线,因此看起来如下:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<GenderList> GenderLists { get; set; }
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
这就是我认为我迷路的地方...很明显,我也必须更新帐户controller(我已经完成了...),但是我不确定如何最好地处理它,因为现有regize.cshtml不允许我加载多种型号,等等。
对于涉及控制器的内容,我尝试了(并且失败了...):
public ActionResult GetGender()
{
GenderList db = new GenderList();
ViewBag.Gender = new SelectList(db.Gender, "ID", "Gender");
return View();
}
,最后但并非最不重要的一点是我登记册的相关部分。cshtml:
@Html.LabelFor(m => m.Gender, new { @id = "registerGenderLabel", @class = "registerLabel col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-3 col-lg-offset-1 col-lg-4" })
@*@{ var gender = new List<SelectListItem>
{
new SelectListItem{ Text = "female", Value = "female" },
new SelectListItem { Text = "male", Value = "male"}
};
}*@
@Html.DropDownListFor("Gender","Select")
我不确定我完全了解您在问什么。但是对于选择列表,只需添加一个选择列表作为模型的属性,该属性是视图的主要模型。
在模型中。
public <List>SelectListItems AddressPurposes {get; set;}
public string AddressPurpose {get; set;}
将其填充在控制器中,以便使用下拉列表,从而用循环中DB的值代替字符串。在这里,我只是添加一个硬编码值,但您显然可以替代任何内容:
model.AddressPurposes = new List<SelectListItem>() { };
model.AddressPurposes.Add(new SelectListItem() { Text = "New Address", Value = "New Address" });
视图:
@Html.DropDownListFor(m => m.AddressPurpose, Model.AddressPurposes, new { @class = "input-sm" })