我知道这是一个非常基本的问题。 我有两张桌子
项目 - ID,名称,TypeID ProjectType - ID,名称
在MVC中,我有一个控制器动作来创建一个新项目。在创建项目时,我在将项目类型传递给视图之前指定项目的类型,如下所示
//
// GET: /Project/Create
public ActionResult Create(string id= null)
{
ProjectType selprojtype = null;
if (id != null)
{
selprojtype = db.ProjectTypes.Include("Projects").Single(p => p.Name == id);
}
Project project = new Project();
project.ProjectType = selprojtype;
//project.TypeID = selprojtype.ID; -
var model = new ProjectViewModel(project);
PopulateDropDownLists(model);
return View(model);
}
我的问题是,只执行以下操作才能关联ProjectType对象。
Project project = new Project();
project.ProjectType = selprojtype;
项目中的TypeID仍为null。除非我这样做
project.TypeID = selprojtype.ID;
有更好的方法吗?
答案 0 :(得分:1)
我不会将TypeID
存储在Project
类上,因为此值已经在ProjectType
类上。如果您需要访问此值,可以这样执行:
project.ProjectType.ID
如果您需要直接从Project
类访问ID,则可以创建传递属性。 E.g。
public class Project
{
public ProjectType ProjectType { get; set; }
public int TypeID
{
get { return ProjectType.ID; }
}
}
答案 1 :(得分:0)
不::)
让ProjectViewModel()的构造函数从传入的Project实例中读取它,并通过从project.ProjectType中读取它来设置id .ProjectType