Detect if action is a POST or GET method

The HttpMethod property on the HttpRequest object will get it for you. You can just use:

if (HttpContext.Current.Request.HttpMethod == "POST")
{
    // The action is a POST.
}

Or you can get the Request object straight off of the current controller. It's just a property.


Starting From .Net Core 3, you can use HttpMethods.Is{Verb}, like this:

using Microsoft.AspNetCore.Http

HttpMethods.IsPost(context.Request.Method);
HttpMethods.IsPut(context.Request.Method);
HttpMethods.IsDelete(context.Request.Method);
HttpMethods.IsPatch(context.Request.Method);
HttpMethods.IsGet(context.Request.Method);

You can even go further and create your custom extension to check whether it is a read operation or a write operation, something like this:

public static bool IsWriteOperation(this HttpRequest request) =>
    HttpMethods.IsPost(request?.Method) ||
    HttpMethods.IsPut(request?.Method) ||
    HttpMethods.IsPatch(request?.Method) ||
    HttpMethods.IsDelete(request?.Method);

To detect this in ASP.NET Core:

if (Request.Method == "POST") {
    // The action is a POST
}

Its better to compare it with HttpMethod Property rather than a string. HttpMethod is available in following namespace:

using System.Net.Http;

if (HttpContext.Request.HttpMethod == HttpMethod.Post.Method)
 {
 // The action is a post
 }

Tags:

C#

Asp.Net Mvc