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可以很容易地填充

编辑

我将外键数据批注放置在错误的属性中。。。我的错