1 namespace System.Web.Mvc {
4 public static class HttpRequestExtensions {
5 internal const string XHttpMethodOverrideKey = "X-HTTP-Method-Override";
7 public static string GetHttpMethodOverride(this HttpRequestBase request) {
9 throw new ArgumentNullException("request");
12 string incomingVerb = request.HttpMethod;
14 if (!String.Equals(incomingVerb, "POST", StringComparison.OrdinalIgnoreCase)) {
18 string verbOverride = null;
19 string headerOverrideValue = request.Headers[XHttpMethodOverrideKey];
20 if (!String.IsNullOrEmpty(headerOverrideValue)) {
21 verbOverride = headerOverrideValue;
24 string formOverrideValue = request.Form[XHttpMethodOverrideKey];
25 if (!String.IsNullOrEmpty(formOverrideValue)) {
26 verbOverride = formOverrideValue;
29 string queryStringOverrideValue = request.QueryString[XHttpMethodOverrideKey];
30 if (!String.IsNullOrEmpty(queryStringOverrideValue)) {
31 verbOverride = queryStringOverrideValue;
35 if (verbOverride != null) {
36 if (!String.Equals(verbOverride, "GET", StringComparison.OrdinalIgnoreCase) &&
37 !String.Equals(verbOverride, "POST", StringComparison.OrdinalIgnoreCase)) {
38 incomingVerb = verbOverride;