私の LoginController には、次のアクション メソッドがあります。
[HttpPost]
public ActionResult Login(LoginViewModel model, string returnUrl) {
if (ModelState.IsValid) {
if (authProvider.Authenticate(model.UserName, model.Password)) {
return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
} else {
ModelState.AddModelError("", "Incorrect username or password");
return View();
}
} else {
return View();
}
}
また、対応するビューは LoginViewModel (上記のアクション メソッドの最初の引数でもある) クラスで厳密に型指定されており、アクション メソッドは次のように呼び出されます。
@using(Html.BeginForm()) {
@Html.EditorForModel()
<p><input type="submit" value="Log in" /></p>
}
今、私は2つの質問があります:
1.コントローラー内に同名のアクションメソッドが存在する。違いは、もう一方には [HttpPost] 属性がないことです。上記のアクションメソッドが呼び出され、他のアクションメソッドが呼び出されないのはなぜですか?
2.アクション メソッドの両方の引数が null とは異なります。呼び出されたアクション メソッドに渡される情報。モデルと URL がメソッドに渡されていると推測できますか? もしそうなら、これらの 2 つのパラメーターはどのような状況で渡され、渡されないのはいつですか?