1

私は 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() にはサインアップ エラー メッセージのみが表示されることをどのように確認できますか?

4

1 に答える 1

0

@Html.ValidationSummary()モデルの検証エラーを表示するには、フォーム内でを使用する必要があります。

元。

@using(Html.BeginForm())
{
   @Html.ValidationSummary()
   .. fields
}
于 2012-07-09T16:28:10.170 に答える