【发布时间】:2016-09-28 08:12:49
【问题描述】:
我正在开发 Webforms(没有 MVC)我有以下场景。我想获取下拉列表的选定文本的 ID 并在单击事件时插入。但它显示从字符串到 EFCode.Department 的转换错误。
代码
EmployeeDbContext db = new EmployeeDbContext();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DropDownList1.DataSource = db.Departments.ToList();
DropDownList1.DataBind();
}
GridView1.DataSource = db.Departments.Include("Employees").ToList();
GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
Employee emp = new Employee(){Name = TextBox1.Text,
Gender= TextBox2.Text,
Salary = float.Parse(TextBox3.Text),
**Department = DropDownList1.SelectedValue**}; // error here
db.Employees.Add()
db.SaveChanges();
}
public class Department
{
public int ID { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public List<Employee> Employees { get; set; }
}
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public float Salary { get; set; }
**public Department Department { get; set; }**
}
public class EmployeeDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Department> Departments { get; set; }
}
【问题讨论】:
-
好吧
Department不是字符串,它是一个类。查看您的代码。 -
这是我的问题。如何将字符串转换为类类型
-
@S.Akbari
Department是导航属性。如何在员工对象中设置它,从下拉列表中检索其值。 -
使用对象初始化器,就像您已经为
Employee所做的一样。例如:Department = new Department { ID = ....,Name = DropDownList1.SelectedValue, } -
@S.Akbari thisn 将添加一个新值,而不是获取数据库中选定项目的值。我只需要选定项目的值,它已经在数据库中。
标签: c# asp.net entity-framework webforms code-first