20

我经常这样做:

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

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

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

4

4 回答 4

20

有效的方法Html.Action是,如果页面的当前请求是一个 post 方法,那么它将搜索带有 name 的方法HttpPost

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

我没有办法强迫它切换到这样的不同方法。

于 2011-07-02T06:24:43.907 回答
5

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

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

这适用于 GET 和 POST 请求。

于 2014-02-12T11:38:33.820 回答
-1

我也遇到了类似的问题,确实有解决方案。只需使用 IsPost 属性和 VOILA 在视图中检查请求是获取还是发布....

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

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

于 2017-02-11T06:43:27.837 回答
-2

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

<div id='Product'>
@{Html.RenderPartial("_CreatePartial", new Product());}
</div>
于 2015-02-23T01:13:33.133 回答