MVC不支持仅基于签名的方法重载,因此将失败:
public ActionResult MyMethod(int someInt) { }public ActionResult MyMethod(string someString) { }但是,它 确实 支持基于属性的方法重载:
[RequireRequestValue("someInt")]public ActionResult MyMethod(int someInt) { }[RequireRequestValue("someString")]public ActionResult MyMethod(string someString) { }public class RequireRequestValueAttribute : ActionMethodSelectorAttribute { public RequireRequestValueAttribute(string valueName) { ValueName = valueName; } public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) { return (controllerContext.HttpContext.Request[ValueName] != null); } public string ValueName { get; private set; }}在上面的示例中,该属性只说“如果请求中存在键 xxx,
则此方法匹配”。如果更适合您的目的,您还可以按路由(controllerContext.RequestContext)中包含的信息进行筛选。



