C# @Action(“Action”、“Controller”调用同名的post和get方法

C# @Action(“Action”、“Controller”调用同名的post和get方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个控制器,其中有两个与HttpPost和HttpGet同名的操作方法,如下所示,当调用带有@Url.action(“DoSomething”,“controller”)的链接时,然后调用这两个方法,如何只调用GET方法 在@URL.Action或任何其他方式中,是否仍然可以传递类型GET或POST [HttpGet] public ActionResult DoSomething(int ? MyParam) { } [HttpPost] public ActionResult DoS

我有一个控制器,其中有两个与HttpPost和HttpGet同名的操作方法,如下所示,当调用带有
@Url.action(“DoSomething”,“controller”)
的链接时,然后调用这两个方法,如何只调用GET方法

@URL.Action
或任何其他方式中,是否仍然可以传递类型GET或POST

[HttpGet]
public ActionResult DoSomething(int ? MyParam)
{

}

[HttpPost]
public ActionResult DoSomething(MyModel Model)
{

}
在Razor视图中,当我构建一个链接时

<a href="@Url.Action("DoSomething","Home",new { MyParam= Whatever})">JustDoIt</a>


然后它调用POST和GET方法,即使在将参数指定为int而不是模型之后,也可以尝试在表单声明中添加POST:

@using (Html.BeginForm("DoSomething","Controller", FormMethod.Post))
{
}
或使用HTML:

<form action="@Url.Action("DoSomething","Controller")" method="POST">
... 
</form>

... 

HTTP动词POST/GET将把您的请求路由到适当的操作。默认设置为GET。

尝试在表单声明中添加帖子:

@using (Html.BeginForm("DoSomething","Controller", FormMethod.Post))
{
}
或使用HTML:

<form action="@Url.Action("DoSomething","Controller")" method="POST">
... 
</form>

... 

HTTP动词POST/GET将把您的请求路由到适当的操作。默认设置是GET。

我想您可能会将
Url.Action()
Html.Action()
混淆(如果我错了,请道歉)。正如有人在评论中提到的,
Url.Action()
将根据用于构建锚标记的参数呈现Url<另一方面,code>Html.Action()在为服务器端的响应构建页面时将调用一个操作,我猜这也是您所指的

如果是这种情况,则需要通过如下方式指定路由值,为
DoSomething()
指定操作参数:

@Html.Action(“DoSomething”,“Home”,new{MyParam=2})


DoSomething(int MyParam)
的结果将被注入页面
Html.Action
不是用来调用
POST
的,所以不能在用
POST
动词修饰的动作上使用它。

我想你可能会把
Url.Action()
Html.Action()
混淆了(如果我错了,请道歉)。正如有人在评论中提到的,
Url.Action()
将根据用于构建锚标记的参数呈现Url<另一方面,code>Html.Action()在为服务器端的响应构建页面时将调用一个操作,我猜这也是您所指的

如果是这种情况,则需要通过如下方式指定路由值,为
DoSomething()
指定操作参数:

@Html.Action(“DoSomething”,“Home”,new{MyParam=2})


DoSomething(int MyParam)
的结果将被注入页面
Html。Action
不打算调用
POST
,因此不能将其用于已用
POST
动词修饰的操作。

问题是,当从布局中删除该部分代码时,我又收到一个ajax请求,要求检查页面是否已完全加载以显示进度条,它在没有两次调用任何操作方法的情况下运行良好。

问题是我又收到一个ajax请求,检查页面是否已完全加载以显示进度条,当从布局中删除该部分代码时,它在没有两次调用任何操作方法的情况下运行良好。

您如何使用
@Url.action()
?如果它在一个链接中,那么它将始终是一个GET请求。您可以在表单标签中发布,也可以通过javascript
Url发布。Action
只提供一个Url—一个字符串。就其本身而言,它不需要调用任何东西。我们需要确切地了解您在哪里使用它。
字符串本身不调用任何东西。请发布一篇文章,问你如何使用
@Url.Action()
?如果它在一个链接中,那么它将始终是一个GET请求。您可以在表单标签中发布,也可以通过javascript
Url发布。Action
只提供一个Url—一个字符串。就其本身而言,它不需要调用任何东西。我们需要确切地了解您在哪里使用它。
字符串本身不调用任何东西。请发布一个默认值,默认值确实是
GET
。这意味着,如果他们使用默认设置,他们就不能报告他们在问题中声称的症状。@Damien_异教徒编辑了我的问题,请看它是否澄清。@LearningPal achor标记生成一个链接,通过GET导航。它不会调用您的post方法。如果您的post方法被调用,则它来自表单提交,而不是锚导航。默认值确实是
GET
。这意味着,如果他们使用默认设置,他们就不能报告他们在问题中声称的症状。@Damien_异教徒编辑了我的问题,请看它是否澄清。@LearningPal achor标记生成一个链接,通过GET导航。它不会调用您的post方法。如果您的post方法被调用,则它来自表单提交,而不是锚导航。@Html.Action()花费了很长时间,并且在我尝试在for循环中生成链接时导致页面崩溃。@Html.Action()花费了很长时间,并且在我尝试在for循环中生成链接时导致页面崩溃。。