一方が他方から派生した2つのクラスがあるとしましょう。
動物と犬
public class Animal
{
public String Name { get; set; }
}
public class Dog : Animal
{
public Boolean HasSpots { get; set; }
}
私のコントローラーでは、動物をインデックスビューに渡します
public ActionResult Index()
{
return View(new Dog() {Name = "Dog"});
}
インデックス-犬を連れて行くエディターテンプレートに渡された動物をキャストしました。
@model MvcApplication1.Models.Animal
@using (Html.BeginForm("About", "Home", FormMethod.Post, null))
{
@Html.EditorFor(x => x, "Dog", "Animal")
<input type="submit" value="Begin" />
}
これは正常に機能しますが、コントローラーでDogに明示的にキャストバックしようとすると、Aboutに投稿してもキャストされません。カスタムモデルバインダーを作成する必要があると想像しますが、その方法がわかりません。または、何かが完全に欠けている場合。インターフェイスを含めずにこれを回避する方法。
(これを小さなテスト例として使用すると、実際のクラスはもう少し複雑になります)