Html.Action - 获取与发布

ekk*_*kis 20 controller-action razor asp.net-mvc-3

我经常这样做:

<div id='Product'>
@Html.Action("Create", "Product")
</div>
Run Code Online (Sandbox Code Playgroud)

它很方便,因为我可以将产品创建表单的绘图委托给另一个控制器动作以嵌入到位.但是,我遇到的问题是,该方法有时(我在什么条件下没有想到)调用我的控制器动作的[HttpPost],这当然失败了.

有没有办法强制@ Html.Action()调用GET版本?

Bui*_*ted 20

方法Html.Action是,如果页面的当前请求是post方法,那么它将搜索具有名称的方法HttpPost.

所以正在发生的事情是你正在发布当前页面并且操作同样假设所有应该执行的操作也必须是POST.

我无法强迫它切换到不同的方法.

  • 是的,我确实弄明白了.这对他们来说是一个可怕的假设.我最终做的是重命名动作,以便没有歧义 (7认同)

小智 5

尝试将AcceptVerbs属性添加到您的操作中:

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Create()
{
    //Your code
}
Run Code Online (Sandbox Code Playgroud)

这将适用于 GET 和 POST 请求。