我正在进行mvc4项目。我正在使用Dexexpress网格。我想做的是当我点击add。。我调用ajax来检查用户是否在数据库中。。如果没有,则保存到数据库中。。我正在返回网格的初始视图,以使用最新数据刷新网格。
但我也想返回一些值和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(); }
});
}
和控制器
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");
}
我想要的是,如果我能在ajax retrun和gridview partial html中获得successid的值。。。这样我就可以根据这个显示消息了。。
如果操作失败,只需将其作为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 });
}
}
以及您的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(); }
});
}
还要注意,我已经去掉了您请求中的datatype: 'json',
参数。这在两个方面是错误的:
- 正确的属性称为
dataType
而不是datatype
- 由于控制器操作可以返回HTML或JSON(取决于操作是否成功),我们让jQuery使用web服务器设置的
Content-Type
响应HTTP头来自动推断正确的类型,并解析传递给success
回调的data
变量
public ActionResult AddUsers(Usertable model)
{
var viewModel = new ReturnValue();
int successid = ManageUserExecutor.Save(model);
if (successid == -1)
{
viewModel.Message= "Failed";
viewModel.ViewString = this.RenderViewToString("GridViewPartial", objList);
}
else
{
viewModel.Message= "Success";
viewModel.ViewString = this.RenderViewToString("GridViewPartial");
}
}
并使用data.ViewString
访问渲染的局部视图html。
$("#grid").html(data.ViewString);
并使用data.Message
访问您想要的消息。
$("#grid").html(data.Message);
您可以在这里找到RenderViewToString函数。