Session
orを使用するのが理にかなっている場合がありTempData
ます。一般に信じられていることとは反対に、これらをある程度強く型付けすることができます。ビューモデルとは異なりますが、拡張メソッドを使用することでキーチェーンの混乱を回避できます。
たとえば、次のようなことをする代わりに:
TempData["NestedVariable1"] = someObject;
...
var someObject = TempData["NestedVariable1"] as CustomType;
これらの変数を格納する拡張メソッドを記述し、拡張メソッドでキーとキャストをカプセル化できます。
public static class ComplexFlowExtensions
{
private static string Nv1Key = "temp_data_key";
public static void NestedVariable1(this TempData tempData, CustomType value)
{
// write the value to temp data
tempData[Nv1Key] = value;
}
public static CustomType NestedVariable1(this TempData tempData)
{
// read the value from temp data
return tempData[Nv1Key] as CustomType;
}
}
次に、次のようにコントローラーまたはビューからこれらの値を読み書きできます。
TempData.NestedVariable1(someObject);
...
var someObject = TempData.NestedVariable1();
と同じパターンを使用することもできますSession
。また、個々のスカラー値を個別の変数に保存する代わりに、ネストされたオブジェクト グラフ全体を変数に保存できる必要があります。それか、JSON にシリアル化して保存し、取り出したときに逆シリアル化します。いずれにせよ、これはビューのフォームに書き出された大量の非表示フィールドよりも優れていると思います。