私は MVC を初めて使用します (WebForms で 2 年間使用)。次のように、Index.cshtml で PartialView を使用してログインを実装しようとしています。
@Html.Action("LogOnPartial")
ユーザー名またはパスワードが正しくない場合、呼び出されたメソッドは期待どおりに次の行に到達します。
ModelState.AddModelError("", "The user name or password provided is incorrect.");
これは部分的なビューであるため、「正しくない」エントリを表示するために、次のようにモデルを Index.cshtml に戻します。
// If we got this far, something failed, redisplay form
return View("Index", model);
次に、Index.cshtml が @Html.Action("LogOnPartial") を呼び出し、これがトリガーされます。
[HttpPost]
public ActionResult LogOnPartial(LogOnModel model)
{
return PartialView(model);
}
レンダリング後、「正しくない」エントリは期待どおりテキスト ボックスに残りますが、上記のエラー メッセージ「提供されたユーザー名またはパスワードが正しくありません」が表示されます。表示されません。上記の方法ではエラーメッセージが渡されていないと思います。
部分ビューから戻ったときにエラー メッセージを表示するにはどうすればよいですか?
ありがとう。
マークスに感謝します。あなたの提案は非常に役に立ちます。もともと、LogOnPartial.cshtml の最後に @Html.ValidationSummary() を既に含めていましたが、どういうわけかエラー メッセージが Index.cshtml に表示されませんでした。次のように @Html.ValidationSummary() を Index.cshtml に移動しました。
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
今では問題なく動作し、ログインエラーメッセージが表示されます。
しかし、今私は別の問題を抱えています。私の Index.cshtml には 2 つの部分ビューがあります。1 つは LogOnPartial.cshtml 用で、もう 1 つは SignUpPartial.cshtml 用です (WebForms で記述されている www.iguardpayroll.com を見てみると、左側の列に 2 つのボックスがあることがわかります。はログイン用、もう 1 つはサインアップ用です)。
@Html.Action("LogOnPartial") のすぐ下に @Html.ValidationSummary() を追加することに加えて、@Html.Action("SignUpPartial") の下に追加して、原因によるエラー メッセージを表示する必要があります。サインアップ プロセス (たとえば、電子メールは既に存在します!)。ただし、これを行うと、ログオン部分とサインアップ部分の両方に同じログオン エラー メッセージが 2 回表示されます。
<div>
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
</div>
<div>
@Html.Action("SignUpPartial")
@Html.ValidationSummary(true, "Sign Up was unsuccessful. Please correct the errors and try again.")
</div>
最初の @Html.ValidationSummary() には LogOnPartial に関連するエラー メッセージのみが表示され、2 番目の @Html.ValidationSummary() にはサインアップ エラー メッセージのみが表示されることをどのように確認できますか?