Asp.net mvc 实体框架中的DropDownListFor
这个问题可能已经被问了一千多次了,但在尝试了10多次之后,我就是想不起来 我试图创建一个“教师”,在这里可以选择教师所在的部门 型号:Asp.net mvc 实体框架中的DropDownListFor,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,这个问题可能已经被问了一千多次了,但在尝试了10多次之后,我就是想不起来 我试图创建一个“教师”,在这里可以选择教师所在的部门 型号: public class CreateTeacherModel { [Required] [Display(Name = "User name")] public string UserName { get; set; } [Required] [DataType(DataType.EmailAddress)]
public class CreateTeacherModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
[Display(Name = "Division")]
public Division Division { get; set; }
[Display(Name = "Divisions")]
public Dictionary<Guid, Division> Divisions
{
get
{
var db = new IBPVEntities();
Division = db.Division.FirstOrDefault();
return db.Division.ToDictionary(division => division.DivisionId);
}
}
视图:
分区有两个属性:分区ID(guid)和名称(字符串)
我完全不知道该怎么办了,有人能帮我吗
提前谢谢
@Html.DropDownListFor(
x => x.Division,
new SelectList(
Model.Divisions.ToList().Select(
x => new { Value = x.Value.DivisionId, Text = x.Value.Name }
),
"Value",
"Text"
)
)
或者,可以向视图模型中添加属性:
public IEnumerable<SelectListItem> DivisionsList
{
get
{
return Divisions.ToList().Select(
x => new SelectListItem
{
Value = x.Value.DivisionId.ToString(),
Text = x.Value.Name
}
);
}
}
或者,另一个属性是根本不在视图模型中使用字典,而是直接使用:
[Display(Name = "Divisions")]
public IEnumerable<SelectListItem> Divisions
{
get
{
var db = new IBPVEntities();
Division = db.Division.FirstOrDefault();
return db.Division.ToList().Select(x => new SelectListItem
{
Value = x.DivisionId.ToString(),
Text = x.Name
});
}
}
或者,可以向视图模型中添加属性:
public IEnumerable<SelectListItem> DivisionsList
{
get
{
return Divisions.ToList().Select(
x => new SelectListItem
{
Value = x.Value.DivisionId.ToString(),
Text = x.Value.Name
}
);
}
}
或者,另一个属性是根本不在视图模型中使用字典,而是直接使用:
[Display(Name = "Divisions")]
public IEnumerable<SelectListItem> Divisions
{
get
{
var db = new IBPVEntities();
Division = db.Division.FirstOrDefault();
return db.Division.ToList().Select(x => new SelectListItem
{
Value = x.DivisionId.ToString(),
Text = x.Name
});
}
}
按照你所说的“解决”分歧是很简单的。在您的模型(CreateTacherModel)中,您实际上不会使用Division作为属性类型,而是使用Guid:
public Guid DivisionId { get; set; }
在控制器中,进行查找以获得实际的除法:
db.Divisions.First(x => x.Id == Model.DivisionId);
如果您需要将CreateTacherModel转换为实体框架对象,您可以查看以执行转换(这就是Stack Overflow在幕后的工作方式)
如果你想得到幻想,你可以注册一个自定义的模型活页夹。请参见示例。在初始化时“结算”除法非常简单。在您的模型(CreateTacherModel)中,您实际上不会使用Division作为属性类型,而是使用Guid:
public Guid DivisionId { get; set; }
在控制器中,进行查找以获得实际的除法:
db.Divisions.First(x => x.Id == Model.DivisionId);
如果您需要将CreateTacherModel转换为实体框架对象,您可以查看以执行转换(这就是Stack Overflow在幕后的工作方式)
如果你想得到幻想,你可以注册一个自定义的模型活页夹。请参见示例。谢谢!这对我帮助很大,尽管。。。当我到达岗位时,部门似乎没有设置好?谢谢!这对我帮助很大,尽管。。。当我到达岗位时,部门似乎没有设置?问题是什么?什么对你不起作用?有什么问题?什么对你不起作用?