0

我有这样的事情:

class AccountController : Controller
{
   [HttpGet]
   public ActionResult Login()
   {...}

   [HttpPost]
   public ActionResult Login(LoginModel model)
   {...}
}

现在,这很难解释:对于发送的每个请求,我都会检查用户是否经过身份验证,如果没有,我会在我的页面中为他们显示一个登录窗口。我通过执行来显示它:@Html.Action("Login", "Account", new {})这个动作通常会返回一个 partialView,所以我可以把它放在我的页面中。

现在我解释有问题的用例:当用户注册自己时,他将注册数据发回给我,当这个注册数据不正确并且我在我的控制器中检测到它时,我会将这些数据发回给用户,以便他可以更正自己。当我这样做时,我重新渲染发送给用户的页面,并通过这样做我@Html.Action("Login", "Account", new {})第二次执行。但是这次我在内存中有用户数据。所以模型绑定器认为,我没有请求 [HttpGet] Login() 方法,但它尝试执行 [HttpPost] 版本。现在我认为最好的办法是更改此操作的这两个版本的名称。但也许有某种魔法可以让我保持相同的名称并准确地执行我想要的,而无需让 modelbinder 决定?

4

0 回答 0