【发布时间】:2017-07-06 07:13:13
【问题描述】:
参数search来自Ajax post的Index视图。在搜索过程之后,我想将 employees 对象发送到 Result 视图。结果操作和视图位于同一控制器和同一视图文件夹中。但 RedirectToAction(employees) 不受影响。通过 Ajax 从视图中获取搜索值或从数据库中获取相应的员工都没有问题,都可以。 This post 说您不能从 Ajax 帖子重定向。我不知道如何将员工对象重定向并发送到结果视图。我不想通过 ViewBag 来做这个。
[HttpPost]
public async Task<IActionResult> Result([FromBody]string search)
{
if (string.IsNullOrEmpty(search))
{
return NotFound();
}
IEnumerable<Employee> employees = await _context.Employees.Where(e => e.Surname == search).ToListAsync();
return RedirectToAction("Index", employees);
}
$(document).ready(function () {
$('.SearchButton').on('click', function (e) {
e.preventDefault();
var searchVal = $('.Search').val();
console.log(searchVal);
$.ajax(
{
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '@Url.Action("Index", "Employee")',
data: JSON.stringify(searchVal),
dataType: 'json',
success: function (response) {
console.log(response);
},
error: function (response) {
console.log(response.message);
}
});
});
});
【问题讨论】:
-
所以帖子还说,您可以通过将重定向 URL 值分配给
window.location.href来从 javascript 重定向(您可以在success回调中执行此操作)。 -
@Set 但是我怎样才能通过重定向发送员工?
-
好吧,我的错,这只有在你可以使用查询参数的情况下才有帮助。对于 POST 数据,您可以构造并填写隐藏的
method=POST action="http://redirect_url" form并提交。查看Send POST data on redirect with Javascript/jQuery -
我想通过 .NET MVC 方式处理这个问题。你知道其他方法吗?
-
@JamesP 是的,你说得对,我可以通过 TempData、ViewBag 等方式完成,但我想以更专业的方式处理(如果有这样的方式)。
标签: asp.net ajax asp.net-mvc asp.net-core asp.net-core-mvc