【发布时间】:2015-01-01 10:22:27
【问题描述】:
当我尝试从另一个动作返回一个动作时,我遇到了一个问题。 我得到了这样的东西:
public ActionResult Action (int param1, string param2)
{
ActionViewModel vm = new ActionViewModel();
vm.Param1Prop = param1;
vm.Param2Prop = param2;
return View(vm);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (ActionViewModel vm)
{
//Do Something...
if (vm.DoItAgain)
{
return Action(vm.Param1Prop-1, vm.Param2Prop);
}
return View(vm);
}
当return Action(vm.Param1Prop-1, vm.ParamProp); 到Action(int param1, string param2) 行时,执行并且一切看起来都很顺利。但是不要。渲染结果看起来像 return View(vm) 被执行了,vm 的所有值都与 Post Action 中发送的值相同,而不是我传递给 return Action(vm.Param1Prop-1, vm.ParamProp); 的值。
我不确定为什么不起作用,返回的 ActionResult 被忽略了?第一个 Action 方法中的代码执行得很好(我调试并在里面放了一个日志来检查它),第一个方法的返回是响应的结束,为什么看起来那条线从未发生过?
我还尝试修改 PostAction 上的 vm,以查看是否以某种方式推断出 vm。那也不行。
为了实现这一点,我放置了一个 RedirectToAction 而不是使用 return Action:
RedirectToAction("Action", new { param1 = vm.Param1Prop-1, param2 = vm.Param2Prop }); 一切正常。我完全理解为什么 RedirectToAction 有效,但我无法弄清楚为什么调用 Action 方法不起作用。
有谁能给我指点一下吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-2