我有一个抽象类
public abstract class Member
{
public string ID { get; set; }
public string Username { get; set; }
public int MemberType { get; set; }
public abstract string MemberName { get; set; }
public int Status { get; set; }
}
public class Person : Member
{
public string LastName { get; set; }
public string FirstName{ get; set; }
}
public class Business : Member
{
public string BusinessName { get; set; }
public string TaxNo { get; set; }
}
该类使用流畅的API进行映射,
现在,有没有办法在不使用或转到子类(Person / Business)的情况下从视图(具有成员模型)更新“Status”属性?
我刚尝试过,但在提交页面时说“无法创建抽象类。”。
或者有正确的方法可以做到这一点吗?
由于
答案 0 :(得分:0)
听起来你的问题是你的action方法有一个抽象类型作为参数,默认的模型绑定器无法做任何事情。如果你没有为两个不同的类使用相同的视图,你可能需要实现自己的模型绑定器来检查传入的请求,并决定实例化哪个类型,Person或Business。
有关创建自定义模型装订器的更多信息,请查看此链接:
http://odetocode.com/blogs/scott/archive/2009/05/05/iterating-on-an-asp-net-mvc-model-binder.aspx
答案 1 :(得分:0)
不在EF。您必须实例化一个对象以使用EF,并且您无法实例化一个抽象类。
你可以让这个课不是抽象的。或者你可以使用存储过程更新字段,或者直接sql。
答案 2 :(得分:0)
这似乎与我此前回答的问题类似:
ASP.NET MVC 3: DefaultModelBinder with inheritance/polymorphism