mem*_*ine 1 asp.net-mvc redirecttoaction
我试图从不同的控制器调用一个动作方法,但它不起作用.它只是跳过RedirectToAction
这是我的代码:
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
return RedirectToAction("Insert", "Policies", new { tempPolicy = TempPolicy });
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
Dar*_*rov 10
重定向时无法发送复杂对象.您必须将每个属性包含为查询字符串参数.这只适用于简单的标量属性.
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
return RedirectToAction("Insert", "Policies", new
{
id = TempPolicy.Id,
prop1 = TempPolicy.Prop1,
prop2 = TempPolicy.Prop2,
...
});
}
Run Code Online (Sandbox Code Playgroud)
如果您具有复杂属性,则还必须包含它们,以便默认模型绑定器能够从查询字符串参数绑定目标操作中的模型:
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 },
...
});
}
Run Code Online (Sandbox Code Playgroud)
和你的目标行动:
public ActionResult Insert(TempPoliciesUpload TempPolicy)
{
...
}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是在重定向之前将此对象保留在后端,然后仅传递id:
public ActionResult sendPolicy(TempPoliciesUpload TempPolicy)
{
int id = Repository.Save(TempPolicy);
return RedirectToAction("Insert", "Policies", new { id = id });
}
Run Code Online (Sandbox Code Playgroud)
并在你的目标行动中:
public ActionResult Insert(int id)
{
TempPoliciesUpload TempPolicy = Repository.Get(id);
...
}
Run Code Online (Sandbox Code Playgroud)