我如何直接从AJAX调用JSON对象的新视图



我有一个视图,它显示了一个数据表中的所有雇员。我可以获取当前行的ID,发送给actionresult函数,然后通过再次抓取来打开视图。

但是我想做的只是使用行中的数据,而不是通过对数据库的查询再次获取数据。我需要的一切都在数据库中。

所有这些都像预期的那样工作,除了…它没有重定向到单个员工详细信息视图。

我需要传递datarow对象,这就是为什么我使用ajax。

我错过了什么?

控制器:

[Route("GetEmployeeByObject")]
public IActionResult GetEmployeeByObject(object? emp)
{            
var obj = emp.ToString();
EmployeeDTO dto = JsonConvert.DeserializeObject<EmployeeDTO>(obj);
EmployeeDetailViewModel employeeDetailViewModel = new(dto);
return View(employeeDetailViewModel);                
}

点击数据库中的编辑按钮时的Javascript:

//individual record event
$('#employee_table tbody').on('click', '.editLink', function () {
var emp = employee_table.row($(this).parents('tr')).data();
$.ajax({
url: "Employees/GetEmployeeByObject/",
type: 'POST',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(emp),
traditional: true,
success:  function(data){
//I don't want the code here because I want it to just load the employee view.
}
});
});

一切正常。但是我需要它不返回到页面,而是重定向到单个员工详细信息页面。

在你的情况下,我不建议你使用ajax,因为你不能使用ajax直接重定向到新的个人页面,我建议你使用form submit,每一行作为表单,当用户单击按钮时,它将提交行数据到动作,只是直接返回视图。但如果您仍然想使用ajax,这里有两个方法。第一个是在GetEmployeeByObject操作中,您需要返回您想要重定向的新单个页面的url,而不是直接返回return view(xxx):

return "xxx/xxx?property1='xxx'&property2='xxxx'";

然后在ajax成功方法:

success:function(response) {
if(response){ // check whether response is received
window.location.href = response;}
}

第二个方法仍然是return view(xxx)后端,然后在ajax成功方法:

success: function(response){
document.write(response)
}

相关内容

  • 没有找到相关文章

最新更新