2012-08-01 44 views
1

我有2个表:tbleducation和tblemployee。 tblemployee表的字段如:employeeID,employeeName等.tbleducation具有如下字段:Id,employeeID等。插入下拉列表数据唯一ID到表

我想创建一个dropwdownlist,从tblemployee表中选择一个给定employeeName的employeeID,这样它可以插入到tbleducation中。我写的代码如下:

模式

public class UserModels 
{ 

    public string EmployeeName { get; set; } 
    public int EmployeeCode { get; set; } 
    public IEnumerable<SelectListItem> Employee { set; get; } 
} 

控制器

[HttpPost] 
public ActionResult Education(FormCollection edu) 
{ 
    tblEmployee_Education education = new tblEmployee_Education(); 
    education.EmployeeID = Convert.ToInt32(edu["EmployeeName"].ToString()); 
    education.Duration = edu["Duration"].ToString(); 
    education.Certificate = edu["Certificate"].ToString(); 
    education.Country = edu["Country"].ToString(); 
    education.SchoolName = edu["SchoolName"].ToString(); 
    education.Major = edu["Major"].ToString(); 
    education.SubDescript = edu["SubDescript"].ToString(); 
    context.AddTotblEmployee_Education(education); 
    context.SaveChanges(); 
    return View(); 
} 

查看

<%= Html.DropDownListFor(x => x.EmployeeName, Model.Employee, "select EmployeeName")%> 

当我试图插入我得到了以下错误消息:

“INSERT语句冲突与外键约束FK_tblEmployee_Education_tblEmployee_Employee”。冲突发生在数据库“MP_DBS_old”,表“dbo.tblEmployee_Employee”,列'代码'。 “

我知道发生这个错误是因为dropdownlist的值是一个字符串,数据库需要一个整数(employeeID),我真的不知道如何解决它。请

+0

你确定这就是为什么你的错误。这似乎与外键约束有冲突。你有没有在表格中使用你想要再次插入到表格中的特定键的行? – JonH 2012-08-01 19:26:53

+0

我敢肯定,错误信息和造成这种错误的原因正如我告诉过你的,这只是我的想法。无论如何,我不明白在你问我的问题中“特定键”是什么意思。 – Maly 2012-08-02 01:50:04

回答

0

您收到此错误,因为你正试图插入,而不是雇员EmployeeName

Html.DropDownListFor(X => x.EmployeeName,Model.Employee, “选择EmployeeName”)%>:!错误

您正在填充EmployeeName int dropdowmli st。正确的路线应该是这样

Html.DropDownListFor(x => x.EmployeeID , Model.Employee, "select EmployeeName")%> 

接下来,您必须改正这一行:

education.EmployeeID = Convert.ToInt32(edu["EmployeeID "].ToString()) 

我认为这将solbe您的问题

+0

非常感谢您的回答,但我在'education.EmployeeID = edu [“EmployeeID”];'并且显示消息“无法将类型字符串隐式转换为整数”时出错。是整数。请帮助我, – Maly 2012-08-02 07:42:45

+0

检查edu [“EmployeeID”]不为空然后将其转换为整数 – 2012-08-02 09:04:26

+0

谢谢,但是当我将它转换为整数:'education.EmployeeID = Convert.ToInt32(edu [“EmployeeID”]的ToString());”。它会显示如下错误:“输入字符串格式不正确”。 – Maly 2012-08-02 09:45:07