我是MVC的新手
我有像这样的员工POCO
[PetaPoco.TableName("tblEmployee")]
[PetaPoco.PrimaryKey("EmployeeId")]
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public int DepartmentId { get; set; }
}
部门ID实际上是来自Table tblDepartment的外键。所以我想在创建新的Employee时将DepartmentId的值限制为表tblDepartment中存在的值(列:Id)。如何做到这一点?
“创建视图”中的现有代码 @ Html.EditorFor(model => model.DepartmentId)
答案 0 :(得分:1)
为什么不使用DropDownList进行部门选择?
@Html.DropDownListFor(m => m.DepartmentID, Model.DepartmentList, string.Empty)
public class Yourclass
{
public SelectList DepartmentList { get; set; }
public Yourclass()
{
FillModel();
}
internal void FillModel()
{
this.DepartmentList = GetDepartmentListFromDb();
}
}
答案 1 :(得分:0)
通常,参考完整性在数据库级别进行管理。
在Employees和Departments之间建立数据库关系以强制执行参考完整性,因此如果您尝试保存部门ID不存在于Department表上的Employee,则应返回完整性错误。
在保存控制器上捕获此错误并将其返回给用户。
此外,如果您只允许用户从加载了数据库中现有数据的有限列表中加载数据,将会有所帮助,如评论中所建议的那样。
然而,这还不够,因为在将表单发布到表单中的列表之前以及将表单发送到控制器以保存数据的那一刻,可以从数据库中删除有效值。