C# MVC异常:以下操作方法之间不明确

C# MVC异常:以下操作方法之间不明确,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我得到了这个错误 当前对控制器类型“AccountController”的操作“登录”请求在以下操作方法之间不明确: MVCApp.Controllers.AccountController类型上的System.Web.Mvc.ActionResult登录(MVCApp.Models.Account) MVCApp.Controllers.AccountController类型上的System.Web.Mvc.ActionResult签名(MVCApp.Models.Account) 这是我的

我得到了这个错误

当前对控制器类型“AccountController”的操作“登录”请求在以下操作方法之间不明确:
MVCApp.Controllers.AccountController类型上的System.Web.Mvc.ActionResult登录(MVCApp.Models.Account)
MVCApp.Controllers.AccountController类型上的System.Web.Mvc.ActionResult签名(MVCApp.Models.Account)
这是我的密码


公共类HttpParamActionAttribute:ActionNameSelectorAttribute
{
public override bool IsValidName(ControllerContext ControllerContext,string actionName,MethodInfo MethodInfo)
{
if(actionName.Equals(methodInfo.Name,StringComparison.InvariantCultureIgnoreCase))
返回true;
var request=controllerContext.RequestContext.HttpContext.request;
返回请求[methodInfo.Name]!=null;
}
}
公共操作结果登录()
{
返回视图();
}
[HttpPost]
[HttpParamAction]
公共操作结果登录(帐户)
{
Account CreateCount=新帐户();
createAccount.Username=account.Username;
createAccount.Email=account.Email;
createAccount.Password=account.Password;
返回视图(“登录”);
}
//获取:/Account/注册
公共行动结果签名()
{
返回视图();
}
[HttpPost]
[HttpParamAction]
公共行动结果签名(帐户)
{
Account CreateCount=新帐户();
createAccount.Username=account.Username;
createAccount.Email=account.Email;
createAccount.Password=account.Password;
返回视图(“注册”);
}

因此您单击了登录按钮,该按钮被路由到登录操作。导致此错误的原因是HttpParamActionAttribute为登录和登录操作的IsValidName返回true

HttpParamActionAttribute针对登录操作返回IsValidName的true,因为登录操作按名称匹配

现在,SignIn上的另一个HttpParamActionAttribute也返回true,因为请求[“SignIn”]不等于null


更改视图以查找不是“登录”也不是“登录”的操作。这样,只有与按钮名称匹配的操作才会为IsValidName返回true。

方法名称不同,因此我认为不应该发生这种情况。如果您的视图中有表单,我们可以看到您的路由吗config@3dd在这里是我的路由配置公共静态无效注册表路由(RouteCollection路由){routes.IgnoreRoute({resource}.axd/{*pathInfo}”);routes.MapRoute(名称:“默认”,url:{controller}/{action}/{id}),默认值:new{controller=“Account”,action=“Login”,id=UrlParameter.Optional});}