[DataContract]
public class SearchCriteria
{
[DataMember]
public string CountryID { get; set; }
}
[DataContract]
public class CitySearchCriteria: SearchCriteria
{
[DataMember]
public string CityID { get; set; }
}
我在 MVC 控制器操作中创建 SearchCriteria 实例,并尝试将其转换为 CitySearchCriteria。
SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.CountryID = "1";
CitySearchCriteria citySearchCriteria = searchCriteria as CitySearchCriteria;
上述语句之后的“citySearchCriteria”对象显示为 NULL 值。我期待它显示两个属性,CountryID 和 CityID,CountryID 填充,CityID 为空白......但它将对象设置为 NULL。
这里有什么解决方案?DataContract 对此有什么作用吗?
评论表明,您不能将基础转换为派生:但实际上,在我看来,我已经成功地做到了这一点,它只是在控制器操作中不起作用:
CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
这正在成功转换,那么为什么不在控制器操作中使用类似的东西呢?