using System; using System.Diagnostics.Contracts; using System.Reflection; using System.Web.Mvc; namespace LeafWeb.Web.Attributes { /// /// Add to actions to use multiple submit buttons (back or save, for example) /// /// /// http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/ /// https://github.com/ashmind/lightwiki/blob/master/$libraries/AshMind.Web.Mvc/HttpParamActionAttribute.cs /// public class HttpParamActionAttribute : ActionNameSelectorAttribute { [Pure] [ContractVerification(false)] public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) { if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase)) return true; if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase)) return false; var request = controllerContext.RequestContext.HttpContext.Request; return request[methodInfo.Name] != null; } } }