私は ASP.NET Web フォームに慣れており、ゆっくりと ASP.NET MVC を学習しています。私のウェブサイトには、ホームページに小さなログインフォームがあります。私の自然な考えでは、このログイン フォームは他の場所でも役立つ可能性があり、それはホームページの主要なアクションではないため、部分的なビューに分けたいと考えています。また、アカウントに関連しているため、HomepageController ではなく、AccountController でのログインが必要です。
ログイン フォームは、強く型付けされた非常に基本的な部分ビューです。
@model Models.Account.AccountLogin
<h2>Login Form</h2>
@using (Html.BeginForm("_Login", "Account")) {
@Html.ValidationSummary()
<div>
<span>Email address:</span>
@Html.TextBoxFor(x => x.EmailAddress)
</div>
<div>
<span>Password:</span>
@Html.PasswordFor(x => x.Password)
</div>
<div>
<span>Remember me?</span>
@Html.CheckBoxFor(x => x.RememberMe)
</div>
<input type="submit" value="Log In" />
}
</div>
ホームページでは、私はこれを持っています:
@Html.Action("_Login", "Account")
最後に、アカウント コントローラーでは、次のようになります。
[HttpGet]
public PartialViewResult _Login()
{
return PartialView();
}
[HttpPost]
public PartialViewResult _Login(AccountLogin loginDetails)
{
// Do something with this
return PartialView();
}
ホームページをロードすると、問題なく表示され、フォームが含まれるようになりました。[ログイン] ボタンをクリックするとmyurl/Account/_Login
、フォームが含まれていますが、_Layout マスター ページ内ではなく、基本的なプレーン HTML のみが含まれており、[ログイン] をクリックしても何も実行されません。
ここでやるべきことの基本的な側面を見逃していると確信しています。誰かが私を正しい方向に向けることができますか?