0

ビューとのダイアログを開く次のコードがあります。

$('.bulkEditlink').click(function () {
    var f = $('td:first', $(this).parents('tr')).text();
    var r = tableCols().toString();
    loadBulkEdit(f, r); //loadBulkEdit is defined on RoleCompare View.
});

-- get でビューをロード

function loadBulkEdit(f,r) {
        var  $urlpath = "@Url.RouteUrl(new { area = "Admin", controller = "Role", action = "RoleEntitlementEdit"})";
        $.ajax({
            url: $urlpath,
            type: 'GET',
            data:  { 
                        funct: f, 
                        roleName: r, 
                        access: 'access' 
                    },
            OnFailure: "alert('error')",
            success: function (data) {
                $("#ajax-content").html(data);
                loadAccess();
            }
        });
} //end loadBulkEdit

--ダイアログ ボックス。保存時に、SaveRoleEntitlement アクション メソッドを呼び出します (ビューで定義された Ajax.BeginForm オプション

function loadAccess(xhr, status) {
        $('#ajax-content').dialog({
            modal: true,
            width: 370,
            title: $('#ajax-content legend').text(),
            buttons: {
                "Save": function () {
                    $('#ajax-content form').submit();
                   $(this).dialog('destroy').html('');
                },
                "Cancel": function () {
                    $(this).dialog('destroy').html('');
                }
            }
        });
    } //end popup

--コントローラーアクション

public JsonResult SaveRoleEntitlement(RoleEntitlementEidtModel model)
        {
            try
            {

                string strPackageName = model.RoleName;
                string strFebSecID = User.Identity.Name;
                string strKeyValue = "";
                string strFunction = model.Function;
                string strAccessLevel = model.AccessLevel;

                PatService.EditEntitlement(strFebSecID, strPackageName, strFunction, strAccessLevel, strKeyValue);
                return Json(new { Error = string.Empty });
            }
            catch (Exception ex)
            {
                return Json(new { Error = ex.Message });
            }
        }

1. 保存時のエラー処理。例外がある場合にユーザーにエラー メッセージを表示したい 2. メソッドの実行中にプログレス バーまたは一種の「待機」メッセージ。誰かが私を助けてくれることを願っています。

ありがとう。

4

1 に答える 1

1

エラーメッセージを表示する方法/場所によって異なります。最初の可能性は、エラーが発生した場合にJSONを返し(現在のように)、Ajax.BeginFormこの場合を処理するためにのOnSuccessハンドラーにサブスクライブすることです。

@using (Ajax.BeginForm("SaveRoleEntitlement", "Role", new { area = "Admin" }, new AjaxOptions { OnSuccess = "saveRoleEntitlementSuccess" }))
{
    ...
}

次に、この成功コールバックを定義します。

function saveRoleEntitlementSuccess(result) {
    if (result.Error && result.Error != '') {
        // there was an error => show it somehow
        alert(result.Error);
    } else {
        // the save was successful => do whatever you need to do in this case
    }
}

UIで検証エラーを直接処理する場合の別の可能性は、エラーが発生した場合に同じパーシャルを返すことです。

public ActionResult SaveRoleEntitlement(RoleEntitlementEidtModel model)
{
    if (!ModelState.IsValid)
    {
        // there was a validation error => redisplay the partial form
        // so that fields appear in red
        return PartialView("RoleEntitlementEdit", model);
    }
    try
    {
        string strPackageName = model.RoleName;
        string strFebSecID = User.Identity.Name;
        string strKeyValue = "";
        string strFunction = model.Function;
        string strAccessLevel = model.AccessLevel;

        PatService.EditEntitlement(strFebSecID, strPackageName, strFunction, strAccessLevel, strKeyValue);
        return Json(new { success = true });
    }
    catch (Exception ex)
    {
        // we're gonna show this in a ValidationSummary
        ModelState.AddModelError("", ex.Message);
        return PartialView("RoleEntitlementEdit", model);
    }
}

およびAjaxフォーム:

@using (Ajax.BeginForm("SaveRoleEntitlement", "Role", new { area = "Admin" }, new AjaxOptions { OnSuccess = "saveRoleEntitlementSuccess" }))
{
    @Html.ValidationSummary()
    ...
}

saveRoleEntitlementSuccessそして今回のあなたの機能:

function saveRoleEntitlementSuccess(result) {
    if (result.success) {
        // the save was successful => do whatever you need to do in this case
    } else {
        // there was an error => in this case the controller action returned
        // a partial that we could use to refresh the form in the DOM:
        $('#ajax-content').html(result);
    }
}
于 2012-08-16T16:41:28.670 に答える