NET Mvc添加以列出来自另一个模型的不同实例对象



我已经开始学习.NET mvc了,我已经为此奋斗了一段时间。下面的代码被简化只是为了显示问题。

我有一个像这样的类的模型,其中包括一个狗的列表:

public class Animals {
public long id {get; set;}
public List<Dog> Dogs {get; set;}
}

我有另一个模型叫狗,每个品种都有实例,我这样构建:

public class Dog
{
public Puddle Puddle {get; set;}
public Retriver Retriver {get; set;}
public Terrier Terrier {get; set;}
}
public class Puddle {
public string Name {get; set;}

public DateTime DayOfBirth {get; set;}
}
public class Retriver {
public string Name {get; set;}
public int Age {get; set;}
}
public class Terrier {
public string color {get; set;}
}

我的目标是在Animal对象下创建一个狗的列表。换句话说,根据用户在视图中选择的品种,将狗对象添加到列表中。我的控制器:

public ActionResult AddDog(long id, string breed, DateTime date)
{
var animal = db.Animals.Find(id);
if (animal == null) return HttpNotFound();
if (breed == "puddle")
{
Dog<Puddle> newPuddle = new Dog<Puddle>()
{
DayOfBirth = date
};
animal.Dogs.Add(newPuddle );
db.SaveChanges();
}
return View();
} 

每个品种都有不同的特性。我想在动物对象下列出不同类型的狗。在上面的控制器中,我当然不能使用Puddle作为类型参数,但我不知道如何解决这个问题。请不要对我苛刻。

你的问题真的没有意义。为什么Dog有另外三只狗作为属性?

您是否试图创建一个CCD_;超类";可以遗传以提供更特定类型的狗?如果是这样,那么Puddle(应该是Poodle吗?(将不是独立的类,而是从Dog继承的。例如

public class Dog {
public string Id { get; set; }
public string Name { get; set; }
}
public class Terrier : Dog {
public string Color { get; set; }
}

Terrier现在将具有Dog的特性,如IdName,以及特定于梗的Color

如果这不是你想要做的,那么请澄清你的问题。

最新更新