0

登録用紙を作っています。送信時に、メールアドレスがデータベースに既に登録されているかどうかを確認します。この場合、空のメールアドレスを使用して登録フォームに再度リダイレクトします。

フォームは入力されていますが、メールアドレスはユーザーが最初に入力したもののままです。これはどのように可能ですか?これが私のコードの一部です

かみそりのページ

@model LibModels.User
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend></legend>

        <div class="row">
            @Html.LabelFor(model => model.userEmail)
            @Html.EditorFor(model => model.userEmail)
            @Html.ValidationMessageFor(model => model.userEmail)
        </div>    <p>
            <input id="knop" type="submit" value="Create" />
        </p>
    </fieldset>
}

コントローラ

[HttpPost]


public ActionResult Register(User viewModel)
    {
        User usr = Adapter.UserRepository.Single(u => u.userEmail.Equals(viewModel.userEmail));
        if (usr == null)
        {
            viewModel.userCreatedDate = DateTime.Now;
            Adapter.UserRepository.Insert(viewModel);
            Adapter.Save();
        }
        else
        {
            viewModel.userEmail = "";
            return View(viewModel);
        }
        return RedirectToAction("Index");
    }

この電子メールアドレスがデータベースに既に存在することを検証で警告するのもよいでしょう。これを行う最善の方法は何ですか?

4

1 に答える 1

1

あなたが探しているのは

ModelState.AddModelError("userEmail", "Email already exists");

ただし、検証を行うカスタム アクション フィルターの作成を検討することをお勧めします。それはずっときれいで、テストが簡単です。

ここにチュートリアルがあります。

于 2013-04-20T20:43:26.730 に答える