ASP.NET、MVC3、Razor を使用しています。私のサイトでは、ユーザーがいつでもログインできるすべてのページ (上部ヘッダー) にログインフォームがあります。この問題は、別のフォームを含む別のページが表示されたときに発生します。それを実装する方法がわかりません。私はたくさん試しましたが、私の問題を解決するには非常に小さな例が必要だと思います. この例は、登録フォームとログイン フォームが同じページにあるような単純なもので、すべての検証やその他のものは別々に機能します。ログインフォームと登録フォームは、部分的なビューでも、誰かが提案できる再利用可能なものでもかまいません。
_Register.cshtml(共有ビュー)のコードは次のとおりです。
@model MVCRnD.Models.RegisterModel
@using (Html.BeginForm("Register","Account")) {
}
上記の共有ビューを配置した about.cshtml のコード
@Html.Partial("_Register")
アカウント コントローラーのコード
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
部分ビュー、つまり登録フォームは正常にレンダリングされています。しかし、送信ボタンをクリックすると、フォーム全体が投稿されますが、実際には正しいレジスタ /Account/Register に移動します。しかし、私は同じページにいたいので、他のフォームには行きません。完全なコードを送信しますか? どこかにアップロードして、リンクを送ります。