返回值以及mvc中的部分视图ajax调用

Mah*_*344 0 jquery asp.net-mvc-4

我正在研究mvc4项目.我正在使用Dexexpress网格.我想要做的是当我点击添加..我做ajax调用,以检查用户是否在数据库..如果没有保存到数据库和..我正在返回网格的paritial视图刷新网格与最新数据.

但是我想和gridview部分一起返回一些值...这样我就可以显示用户已经添加或者没有添加.

例如:ajax调用的Jquery代码

function AddUser() {
    showProgress();
    $.ajax({
        url: 'ManageUsers/AddUsers/?id=' + Math.random(),
        data: $("#frmManageUsers").serialize(),
        type: 'Post',
        datatype: 'json',
        success: function (data) {
            if (data != '') {                
                $("#grid").html('');
                $("#grid").html(data);
            }
            else
                alert('No Record Found');
        },
        error: function (request, status, error) { ShowErrorMessage(); },
        complete: function () { hideProgress(); ShowSuccessMessage(); }
    });
}  
Run Code Online (Sandbox Code Playgroud)

和控制器

public ActionResult AddUsers(Usertable model)
        {
            int successid = ManageUserExecutor.Save(model);
            if (successid == -1)
            {
                List<usp_GetListOfUsers_Result> objList = new List<usp_GetListOfUsers_Result>();
                return PartialView("GridViewPartial", objList);
            }
            else
                return RedirectToAction("GridViewPartial");
        }
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果我可以获得ajax retrun中的successid以及gridview部分html ...以便我可以根据那个显示消息...

Dar*_*rov 5

如果操作失败,只需将其作为JSON结果返回:

public ActionResult AddUsers(Usertable model)
{
    int successid = ManageUserExecutor.Save(model);
    if (successid == -1)
    {
        List<usp_GetListOfUsers_Result> objList = new List<usp_GetListOfUsers_Result>();
        return PartialView("GridViewPartial", objList);
    }
    else
    {
        return Json(new { id = successid });
    }
}
Run Code Online (Sandbox Code Playgroud)

和你的AJAX电话:

function AddUser() {
    showProgress();
    $.ajax({
        url: 'ManageUsers/AddUsers', // <!-- TODO: This url should NOT be hardcoded like that. It should be generated by a server side helper
        cache: false, // <!-- That's what should be used instead of reinventing wheels with Math.random stuff
        data: $("#frmManageUsers").serialize(),
        type: 'POST',
        success: function (data) {
            if (data.id) {
                // the controller action returned a JSON result with id property =>
                // handle it here
                alert('Sorry, an error occurred, successid: ' + data.id);
            } else {
                // The operation succeeded and the controller action returned a partial
                // view => update your DOM here
                $("#grid").html(data);
            }
        }),
        error: function (request, status, error) { ShowErrorMessage(); },
        complete: function () { hideProgress(); ShowSuccessMessage(); }
    });
}  
Run Code Online (Sandbox Code Playgroud)

另请注意,我已经删除了datatype: 'json',您的请求中的参数.这有两种方式是错误的:

  1. 调用正确的属性dataType而不是datatype
  2. 由于控制器操作可以返回HTML或JSON(取决于操作是否成功),我们留给jQuery使用Content-TypeWeb服务器设置的响应HTTP标头自动推导出正确的类型并解析data传递给success回调的变量.