Html.Action - Get vs Post

时间:2011-07-02 03:38:32

标签: asp.net-mvc-3 razor controller-action

我经常这样做:

<div id='Product'>
@Html.Action("Create", "Product")
</div>

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

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

4 个答案:

答案 0 :(得分:18)

Html.Action的工作方式是,如果页面的当前请求是post方法,那么它将搜索名为HttpPost的方法。

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

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

答案 1 :(得分:4)

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

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Create()
{
    //Your code
}

这适用于GET和POST请求。

答案 2 :(得分:-1)

我也陷入了类似的问题,确实有一个解决方案。 只需使用IsPost属性和VOILA ....检查请求是否在View中获取或POST。

@if(!IsPost)    
{    
    HTML.Action("ActionName")    
}

关心遇到类似问题的人......

答案 3 :(得分:-2)

我刚遇到这个问题,很难识别。我最终使用了Html.RenderPartial,如下所示:

<div id='Product'>
@{Html.RenderPartial("_CreatePartial", new Product());}
</div>