带有子接口的ASP.NET MVC 4 ViewModel

Ada*_*itt 7 c# asp.net asp.net-mvc-4 asp.net-mvc-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
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我在默认模型绑定器中遇到错误,因为它不了解实例化IJob的实现.当我创建MyViewModel时,我将FullTimeJob的实例设置为其Job属性.我猜ASP.NET不能保留实现类型?

什么是最佳实践解决方案?

Meh*_*taş 1

视图只是 UI 和控制器之间的数据载体。因此,您只需将 Id 和 CompanyName 属性添加到您的视图中即可。因为您想要做的就是从 UI 获取 Id 和公司值。从 UI 获取数据时,是实习还是全职工作可能并不重要。当您处理从 UI 获取的数据时,这可能很重要,但这不是 View 的责任。