有没有办法处理这个没有自定义模型绑定?ASP.NET MVC 4 ViewModel与子接口
public class MyViewModel {
public string UserId { get; set; }
public IJob Job { get; set; }
}
public interface IJob {
public long Id { get; set; }
public string CompanyName { get; set; }
}
public class FullTimeJob : IJob {
// omitted for brevity
}
public class Internship : IJob {
// omitted for brevity
}
我遇到的问题是我得到默认模型绑定错误,因为它不理解实例化哪个实现IJob的。当我创建MyViewModel时,我将FullTimeJob的一个实例设置到它的Job属性中。我猜ASP.NET不能保留实现类型?
这是什么最佳实践解决方案?
我希望能够维护对象层次结构,所以我绝对想*避免*将作业相关的字段直接放到视图模型上。如果我这样做,ViewModel不会给我买东西。 –
是的,我在一个自定义模型绑定中做了这个,但我只是希望有一个不太自定义的答案。 –
你可以让你的ViewModel类似于'class MyViewModel其中T:IJob,new()',并且在构造函数中你可以实例化你自定义的作业类型Job = new T();'但它仍然取决于具体的Job类型。 –