2

ユーザーの役割 (管理者、オペレーターなど) のリストを表示するビューと、モーダル ウィンドウをポップアップ表示する [追加] ボタンを使用して、ユーザーが新しい役割を追加できるようにします。

私のコントローラーでは、これを HttpPost メソッドとして持っています

    [HttpPost]
    public ActionResult Create(RoleModel model)
    {

        if (ModelState.IsValid)
        {
            var role = new RoleDto
                {
                    Name = model.Name,
                    Description = model.Description
                };

            var roleAdded = _rolePermissionsRepository.AddRole(role);
            if (roleAdded != null)
            {
                //CLOSE WINDOW
            }
            else
            {
                //PRINT ERROR MSG TO WINDOW
            }
        }
        return View();
    }

DB への追加が成功したら、モーダル ウィンドウを閉じて、メイン インデックス ページのリストを更新します。

DB への永続化中にエラーが発生した場合、モーダル ウィンドウは開いたままになり、何らかのエラーが表示されます。

どうすればそれを達成できますか?

これは、ウィンドウをポップアップするためにインデックスページで使用しているものです

    $("#open").click(function (e) {
        wnd.center();
        wnd.open();
    });
4

1 に答える 1

3

JsonResult を返して、ブラウザに何が起こったかを伝える必要があります。

[HttpPost]
public ActionResult Create(RoleModel model)
{

    if (ModelState.IsValid)
    {
        var role = new RoleDto
            {
                Name = model.Name,
                Description = model.Description
            };

        var roleAdded = _rolePermissionsRepository.AddRole(role);
        if (roleAdded != null)
        {
            //CLOSE WINDOW
            return Json(new { success = true });
        }
        else
        {
            return Json(new { error = "Error! Can't Save Data!" });
        }
    }

    return Json(new { error = "Generic Error Message!" });
}

wnd ページで実行する必要がある JavaScript を次に示します。エラー メッセージがある場合は表示し、そうでない場合はウィンドウを閉じます。

$('form').submit(function(e) {
    e.preventDefault();
    $.post(this.action, $(this).serialize(), function(response) {
        if(response.error) {
            alert(response.error);
        }
        else {
            wnd.close();
        }
    }, 'json');
});
于 2012-11-19T13:16:02.457 に答える