私はこのようなものを持っています:
class AccountController : Controller
{
[HttpGet]
public ActionResult Login()
{...}
[HttpPost]
public ActionResult Login(LoginModel model)
{...}
}
ここで、これを説明するのは困難です。リクエストが送信されるたびに、ユーザーが認証されているかどうかを確認し、認証されていない場合は、ページ内にユーザーのログイン ウィンドウを表示します。実行して表示します。@Html.Action("Login", "Account", new {})
このアクションは通常、partialView を返すため、ページ内に配置できます。
ここで、問題のある使用例を説明します。ユーザーが自分自身を登録すると、登録データが返されます。この登録データが何らかの形で不良であり、コントローラーでそれを検出した場合、このデータをユーザーに送信して、ユーザーが自分で修正できるようにします。これを行うと、ユーザーに送信されたページを再レンダリングし、それを行うこと@Html.Action("Login", "Account", new {})
で 2 回目の実行を行います。しかし、今回はメモリにユーザーデータがあります。そのため、モデル バインダーは、[HttpGet] Login() メソッドを要求していないと思いますが、[HttpPost] バージョンを実行しようとします。このアクションの両方のバージョンの名前を変更するのが最善だと思います。しかし、同じ名前を保持し、modelbinder に決定させることなく、自分がやりたいことを正確に実行できる魔法があるのではないでしょうか?