Html.RenderAction使用Post而不是Get

时间:2013-10-10 15:11:21

标签: asp.net-mvc-4 razor

我的页面上有一个简单的表单。提交时,它会检查是否ModelState.IsValid并返回具有相同模型的视图,如果它无效。

在同一页面上,我正在渲染一个包含其他形式的动作:

Html.RenderAction("AccountNote", new { id = Model.ID });

在我的页面上提交表单并且验证失败之前,一切正常。当它再次显示页面时,当我希望触发Get事件时,会触发AccountNote操作的Post事件。我想这是有道理的,为什么它正在发生,因为它是渲染视图的动作的帖子,但我想要触发Get事件。

public ActionResult AccountNote(int id)
{
    //code goes here...

     return PartialView(model);
}

[HttpPost]
public ActionResult AccountNote(AccountNoteViewModel model)
{
    //code goes here...

    return PartialView(model);
}

我做错了吗?或者我需要做些什么才能使这项工作成功?我希望Html.RenderAction总是假设GET而不是POST。

3 个答案:

答案 0 :(得分:1)

因为我知道,开箱即用的这个问题没有任何解决方案。 RenderAction和Action方法,考虑当前请求决定使用哪个动词。 但你可以重命名它们。例如,将限制为HttpPost的那个重命名为AddAccountNote,并将另一个重命名为当前名称,而不指定其动词。

答案 1 :(得分:0)

RenderPartial会是您的选择吗?

有关此主题的更多讨论,请访问:RenderAction calls wrong action method

答案 2 :(得分:0)

一种解决方案是只有一个AccountNote()操作方法。然后无论GET或POST如何都会调用它。如果您使用的是AccountNote()的POST版本,则可能需要稍微修改一下逻辑。

您可以使用[ChildActionOnly]属性来装饰它。