Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core mvc ASP.NET核心MVC-包含使用接口的属性的绑定模型_Asp.net Core Mvc_Asp.net Core 1.1 - Fatal编程技术网

Asp.net core mvc ASP.NET核心MVC-包含使用接口的属性的绑定模型

Asp.net core mvc ASP.NET核心MVC-包含使用接口的属性的绑定模型,asp.net-core-mvc,asp.net-core-1.1,Asp.net Core Mvc,Asp.net Core 1.1,我有一个模型,它包含一个基于接口的属性,具体的实现可以通过模型的另一个属性发现 public class SubscriptionViewModel { public Guid Id { get; set; } ... public SubscriptionTypeEnum SubscriptionType { get; set; } // <- Determines the concrete class public ISubscriptionCriter

我有一个模型,它包含一个基于接口的属性,具体的实现可以通过模型的另一个属性发现

public class SubscriptionViewModel
{
    public Guid Id { get; set; }
    ...
    public SubscriptionTypeEnum SubscriptionType { get; set; } // <- Determines the concrete class
    public ISubscriptionCriteria SubscriptionCriteria { get; set; } //<- Property based on interface class
    ...
}
这是因为控制器不知道该接口使用哪个实体实现

有没有办法解决这个问题?使用自定义的
IModelBinderProvider
BindingBehaviorAttribute
似乎可以实现这一点


我想我可以有一个
SuperSubscriptionCriteria
实现,它包含
ISubscriptionCriteria
的具体实现所使用的所有可能属性,然后依靠AutoMapper将它们转换为真正的实现。但是这看起来像是一个黑客行为,并且随着新的
ISubscriptionCriteria
实现的添加,这将需要持续维护。

在ViewModel中将
ISubscriptionCriteria
作为属性的目的是什么?我只是好奇。根据订阅的类型,有几种不同的标准类型可用,特定于某些订阅。在这种情况下,订阅是关于许可数据的电子邮件警报-www.permitwatch.co.nz实际实现如何分配给
ISubscriptionCriteria
?通常情况下,MVC的ViewMode没有外部依赖项,除非您将其用作MVVM的视图模型。AutoMapper用于从其他类填充ViewModel,我以前的一个q可能会提供更多详细信息-
[HttpPost("api/[controller]/[action]")]
public async Task Post([FromBody]SubscriptionViewModel model)
{
    ...
}