まあ、 アップキャストクラス参照フォームを通してそれを取得した後
はのは、私は2つのモデルクラスを持っていると仮定しましょう。ビューにDerivatedClassを渡してフォームを通じて情報を取得すると、再びDerivatedClassにキャスト可能ではありませんか?
問題は、ビュー(Model.GetType()。FullName)内でモデルの型を取得すると、(驚くことなく)DerivatedClass型を取得するということです。
しかし、私はモデルが投稿チェックインするとき、私のコントローラの内部で、私はBaseClassのを取得する(そして明らかに、それはキャストすることはできません!)
コントローラー:
public ActionResult ViewPage(){
return View(new DerivatedClass());
}
[HttpPost]
public ActionResult ViewPage(BaseClass b){
b.GetType().FullName; //Gives me Project.packeges.BaseClass.
DerivatedClass d = (DerivatedClass)b; //Ops, It can't be done. Exception.
}
ビュー:
@model Project.packeges.BaseClass
<h3>@Model.GetType().FullName</h3>
<!-- Gives me Project.packeges.DerivatedClass -->
...
私のロジックは間違っていますか?とにかく、POST情報を取得した後、コントローラー内でこのキャストを行うことはありますか?
正確に達成しようとしているのは何ですか?モデルタイプを持つことの全体的なポイントは、MVCのためのタイプを持つことができます*あなたのデータを*後にモデル化することです。ビューで実際に使用したいタイプとは異なるタイプを指定すると、自己倒産することになります。 –
多分私は間違っています...しかし、基本クラスモデルを持つビューを子クラスに再利用できると便利だと思います...それはOOPのピラールの1つですね。コードの再利用は? –