リダイレクト時に複雑なオブジェクトを送信することはできません。各プロパティをクエリ文字列パラメータとして含める必要があります。そして、これは単にスカラープロパティでのみ機能します。
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
return RedirectToAction("Insert", "Policies", new
{
id = TempPolicy.Id,
prop1 = TempPolicy.Prop1,
prop2 = TempPolicy.Prop2,
...
});
}
複雑なプロパティがある場合は、それらも含める必要があります。これにより、デフォルトのモデルバインダーが、クエリ文字列パラメーターからターゲットアクションでモデルをバインドできるようになります。
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
return RedirectToAction("Insert", "Policies", new RouteValueDictionary
{
{ "id", TempPolicy.Id },
{ "prop1", TempPolicy.Prop1 },
{ "prop2", TempPolicy.Prop2 },
{ "prop3.subprop1", TempPolicy.Prop3.SubProp1 },
{ "prop3.subprop2", TempPolicy.Prop3.SubProp2 },
...
});
}
とあなたのターゲットアクション:
public ActionResult Insert(TempPoliciesUpload TempPolicy)
{
...
}
もう1つの可能性は、リダイレクトする前にこのオブジェクトをバックエンドに保持してから、IDのみを渡すことです。
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
int id = Repository.Save(TempPolicy);
return RedirectToAction("Insert", "Policies", new { id = id });
}
そしてあなたのターゲットアクションで:
public ActionResult Insert(int id)
{
TempPoliciesUpload TempPolicy = Repository.Get(id);
...
}