Files
LeafWeb/Web/Attributes/HttpParamActionAttribute.cs
T
2016-02-03 13:39:50 -05:00

31 lines
1.0 KiB
C#

using System;
using System.Diagnostics.Contracts;
using System.Reflection;
using System.Web.Mvc;
namespace LeafWeb.Web.Attributes
{
/// <summary>
/// Add to actions to use multiple submit buttons (back or save, for example)
/// </summary>
/// <remarks>
/// 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
/// </remarks>
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;
}
}
}