我有一个名为Index.cshtml的视图,其中包含一个用户表(创建/编辑/更新功能)。
单击按钮(创建/编辑/更新)时,我有一个 jQuery 对话框。接下来我使用这样的 ajax 帖子:
- 编辑>>调用一个动作控制器进行编辑并返回一个json>>用javascript更新行表
- 删除 >> 调用一个动作控制器来删除并返回一个 json >> 用 javascript 删除行表
- 创建 >> 调用一个动作控制器来创建并重定向到 Index.cshtml >> ???
对于创建部分,我有一个问题:我想“简单地”显示我的视图,但我在一个 ajax 帖子中。我不知道该怎么做。
这是我的代码(提交数据然后刷新视图):
$.post($(this).attr('action'), $(this).serialize(), function (data, status) {
$('#my-modal').modal('hide');
if (data.operation == 'edit') {
// Edit
var row = $('#' + data.userid);
row.children(':eq(0)').text(data.company);
row.children(':eq(1)').text(data.username);
row.children(':eq(2)').text(data.email);
row.children(':eq(3)').text(data.firstname);
row.children(':eq(4)').text(data.lastname);
} else if (data.operation == 'delete') {
// Delete
var row = $('#' + data.userid);
row.remove();
} else {
// Create
alert(data);
$("#userList").html(data);
}
})
如您所见,我检查了 data.operation,它告诉我是否对(最后一种可能性)“创建”进行了“编辑”或“删除”。对于创建问题,我的整个视图(< html> < body> ...)已生成并添加到我的#userList div 中。那是重复的东西。
也许这不是正确的做法?
谢谢。
更新
这是我的创建操作:
[HttpPost]
public ActionResult Create(UserCreateViewModel viewModel)
{
if (!ModelState.IsValid)
{
this.Response.StatusCode = 400;
return PartialView("Create", viewModel);
}
var userDTO = new UserDTO();
Mapper.Map(viewModel, userDTO);
_requestServiceClient.CreateNewUser(userDTO);
return RedirectToAction("Index");
}
这是我的索引操作:
[Authorize]
public ActionResult Index(string q, int? page)
{
var users = _requestServiceClient.GetUsers();
...
...
if (Request.IsAjaxRequest())
return PartialView(userListPaged);
else
return View(usersListPaged);
}
在 relexion 之后,在“创建”的情况下,我认为最好像这样简单地重新加载页面:
...
} else if (data.operation == 'create') {
// Create >> refresh the page
location.reload();
}
不管怎么说,还是要谢谢你。