Asp.net mvc 在MVC中,如何更新与另一个表/模型相关的列数据?
假设我有两个例子:Asp.net mvc 在MVC中,如何更新与另一个表/模型相关的列数据?,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,假设我有两个例子: public class Cat { public int Id { get; set; } public string Name { get; set } public CatColor Color { get; set; } // I'd like to change this value } public class CatColor { public int Id { get; set; } public string Col
public class Cat
{
public int Id { get; set; }
public string Name { get; set }
public CatColor Color { get; set; } // I'd like to change this value
}
public class CatColor
{
public int Id { get; set; }
public string Color { get; set }
}
我有一个表单,提示输入Cat值、Id(自动生成)、名称和颜色。我在更新/创建名称时没有问题,但颜色值根本没有改变
在数据库中,CatColor可以分配给许多猫。这应该是一个简单的任务,但我已经盯着它看了一段时间了
在我的控制器中,我有如下内容:
public ActionResult SaveCat(Cat objCat)
{
Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id);
oc.Name = objCat.Name;
// oc.CatColor.Color = objCat.Color ???
...
db.SaveChanges();
return ..
}
public ActionResult SaveCat(Cat objCat)
{
Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id);
oc.Name = objCat.Name;
oc.CatColor.ColorId = objCat.ColorId
...
db.SaveChanges();
return ..
}
只是想知道我怎么做。您缺少ForeignKey数据注释
public class Cat
{
public int Id { get; set; }
public string Name { get; set }
public int ColorId { get; set; }
[ForeignKey("ColorId")]
public CatColor Color { get; set; }
}
您可以这样做:
public ActionResult SaveCat(Cat objCat)
{
Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id);
oc.Name = objCat.Name;
// oc.CatColor.Color = objCat.Color ???
...
db.SaveChanges();
return ..
}
public ActionResult SaveCat(Cat objCat)
{
Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id);
oc.Name = objCat.Name;
oc.CatColor.ColorId = objCat.ColorId
...
db.SaveChanges();
return ..
}
注意:如果在您的视图中有一个包含所有可能CatColors的下拉列表,那么objCat.ColorId可以很容易地填充
编辑
我将外键数据批注放置在错误的属性中。。。我的错