私は次のクラスを持っています:
class SomethingBase
{
public string SharedProperty { get; set; }
}
class ChildClassOne : SomethingBase
{
public string SpecificPropertyOne { get; set; }
}
class ChildClassTwo : SomethingBase
{
public string SpecificPropertyTwo { get; set; }
}
そして、2つのHTMLフォームを持つASP.NETMVCビューがあります。これらのフォームは同じアクションメソッドを呼び出しています。このアクションメソッドは、2つのSomethingBase
クラス派生物のいずれかを受け取る必要があります。ただし、のような単一のパラメータを作成するとSomethingBase param
、のみSharedProperty
が受信されます。この動作は、ASP.NETMVCのバインディングメカニズムによって説明できます。
アクションメソッドを機能させるために、次の定義を作成しました。
public ActionResult(ChildClassOne param1, ChildClassTwo param2)
SharedProperty
両方のパラメータに移動しますが、特定のプロパティは、実際にビューから渡されたオブジェクトに対してのみ入力されます。それは機能しますが、これが唯一の解決策ではないと思います。
この状況に対するベストプラクティスの解決策はありますか?