4

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

在同一页面上,我正在呈现一个包含另一个表单的操作,如下所示:

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

一切正常,直到我在我的页面上提交表单并且验证失败。当它再次显示页面时,AccountNote 操作的 Post 事件会在我期望 Get 事件触发时触发。我想这是有道理的,因为它是渲染视图的操作的帖子,但我希望 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。

4

3 回答 3

1

一种解决方案是只有一种AccountNote()操作方法。然后无论 GET 还是 POST 都会调用它。如果您使用 POST 版本的AccountNote().

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

于 2013-10-24T20:52:00.373 回答
1

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

于 2014-02-28T06:06:10.853 回答
0

RenderPartial 会是您的选择吗?

有关此主题的更多讨论可以在这里找到:RenderAction 调用错误的操作方法

于 2013-10-24T20:32:52.753 回答