10
[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 が入力された CountryID と CityID の両方のプロパティと、CityID が空白のプロパティが表示されることを期待していましたが、オブジェクトが NULL に設定されています。

ここで解決策は何ですか?DataContract はこれで何かを行う必要がありますか?

コメントは、ベースを派生に変換できないことを示唆しています:しかし、実際には、私の見解ではこれを成功させましたが、コントローラーアクションでは機能していません:

CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;

これは正常に変換されているのに、コントローラーのアクションで同様のことが機能しないのはなぜですか?

4

3 に答える 3