我正在研究mvc4项目。我正在使用Dexexpress网格。我想要做的是当我点击添加..我做ajax调用,以检查用户是否在数据库..如果没有保存到数据库和..我正在返回网格的paritial视图刷新网格与最新数据。
但是我想和gridview partial一起返回一些值...这样我就可以显示用户是否已添加。
例如: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中获得successid以及gridview部分html的价值......那么我可以根据那个显示消息..
答案 0 :(得分: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 });
}
}
和你的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
Content-Type
响应HTTP标头自动推导出正确的类型并解析传递给data
回调的success
变量。答案 1 :(得分:0)
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函数here。