4

コントローラーで例外がキャッチされた後、電子メール フィールドにエラー メッセージを設定したいと思います。

...
catch (EmailAlreadyExistsException emailAlreadyExistsException)
{
    ModelState.AddModelError("Useraccount_Email", "This is an error message");

    RegisterViewModel viewModel = new RegisterViewModel
    {
        Useraccount = useraccount,
        InformationMessages = InformationMessageHelper.GetInformationMessages()
    };
    return PartialView(viewModel);
}
...

ビューにエラー メッセージが表示されるはずです。

@using (Ajax.BeginForm("Register", new AjaxOptions { HttpMethod = "Post", OnSuccess = "registerAjaxSuccess" }))
{
    @Html.ValidationSummary(true)        
    <div class="ym-grid">
        <div class="ym-g33 ym-gl">
            <div class="ym-gbox">
                @Html.LabelFor(model => model.Useraccount.LastName)
            </div>
...
    <div class="ym-grid">
        <div class="ym-g33 ym-gl">
            <div class="ym-gbox">
                @Html.LabelFor(model => model.Useraccount.Email)
            </div>
        </div>
        <div class="ym-g33 ym-gl">
            <div class="ym-gbox">                  
                @Html.EditorFor(model => model.Useraccount.Email, new { required = "required" })                 
            </div>
        </div>
        <div class="ym-g33 ym-gr">
            <div class="ym-gbox">
               @Html.ValidationMessageFor(model => model.Useraccount.Email)
            </div>
        </div>
    </div>
...

しかし、この場合は何も表示されません。:(私は何を間違えましたか?

4

2 に答える 2

8

モデル エラーを追加するとき、複雑なオブジェクトを操作するときの正しい区切り文字.は、アンサースコアではなくドットです_

したがって、次の呼び出しが機能するはずです。

ModelState.AddModelError("Useraccount.Email", "This is an error message");
于 2013-03-19T16:25:19.317 に答える
0

ModelState.AddModelError(string.Empty, "これはエラー メッセージです"); を使用してください。および @Html.ValidationSummary(true);

これは機能します。

于 2014-01-31T05:03:08.760 に答える