2011-01-03 22 views
0

私のコントローラでは、一般的にXMLを非直列化しています。デシリアライズされるオブジェクトは、任意の数の異なる型になる可能性があります。これはコンパイル時には分かりません。私はいくつかの部分ビューを作成しました。それぞれのビューは、XML非直列化の可能な結果である異なるオブジェクトに強く型付けされています。ASP.NET MVC:オブジェクトタイプに応じて異なるビューを返す

私の問題は、私が正しい見解を返す良い方法に苦労していることです。私はいつもオブジェクトのいくつかのプロパティを切り替えたり、正しいビュー名を得るためにKey/ViewNameディクショナリマッピングを使うことができましたが、それよりも少し一般的なものを期待していました。

私は暗黙のうちに「私が持っているオブジェクトから型を取ったビューを返す」方法を知っていますか?

ありがとうございました。

答えて

0

あなたのコードを見ることなく、外部からのベストプラクティスに適合しているかどうかを判断するのは難しいですが、あなたのアプローチが多少混乱し制約的かもしれないようです。

つまり、タイプ名を使用してビューに名前を付けることができます。

何かreturn View(xmlObject.GetType().Name + "View");

+0

私はより多くの文脈を提供することができます。私は基本型からすべて継承した複数の子型を持っています。私はSystem.Xml.Serialization属性をベースクラスとサブクラスで使用して、シリアライザにXMLの構造化方法を指示します。基底クラスでは、[XmlInclude]を使用して、基底クラスから型付けされたシリアライザを使用して、いずれかのサブタイプを直列化できることを示します。これはジェネリック主義を提供します。その結果、Xmlは後でオブジェクトに逆シリアル化されて元のオブジェクトに格納されますが、サブクラスのタイプは維持されます。だから私は、シリアル化されたものに応じて、異なるタイプのオブジェクトで終わることができます。 –

関連する問題