我已经开始学习.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
的特性,如Id
和Name
,以及特定于梗的Color
。
如果这不是你想要做的,那么请澄清你的问题。