Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 Action-Get与Post_Asp.net Mvc 3_Razor_Controller Action - Fatal编程技术网

Asp.net mvc 3 Action-Get与Post

Asp.net mvc 3 Action-Get与Post,asp.net-mvc-3,razor,controller-action,Asp.net Mvc 3,Razor,Controller Action,我经常这样做: <div id='Product'> @Html.Action("Create", "Product") </div> @动作(“创建”、“产品”) 这很方便,因为我可以将产品创建表单的绘制委托给另一个控制器操作,以便嵌入到位。然而,我遇到的问题是,该方法有时(我还不知道在什么条件下)会调用我的控制器操作的[HttpPost],这当然会失败 有没有办法强制@Html.Action()调用GET版本?Html.Action的工作方式是,如果页面的当前请

我经常这样做:

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

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


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

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

因此,发生的情况是,您正在发布当前页面,并且该操作同样假定所有应该执行的操作也必须是一个POST


据我所知,没有办法强迫它切换到另一种方法

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

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

这对GET和POST请求都有效。

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

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

@{Html.RenderPartial(“_CreatePartial”,new Product());}

我也遇到了类似的问题,确实有解决办法。 只需使用IsPost属性和VOILA检查请求是get还是POST

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

至于遇到类似问题的人……

是的,我确实想出来了。对他们来说,这是一个可怕的假设。我最后做的是重命名操作,这样就不会有歧义,这可能是最好的解决方案。很高兴能帮上忙。嗯。。。是的,但这会迫使我将两种行为编码到同一个方法中。。。这意味着我需要一种方法来判断是否执行了Post或Get。。。如何做到这一点?