我一直试图让“RedirecttoAction”声明在这里工作,但它没有让步。这是方法:
[HttpPost]
public ActionResult UpdateTech(int tech, int id)
{
Callout callout = db.Callouts.Find(id);
callout.TechnicianId = tech;
callout.TechStatus = "ASSIGNED";
db.Entry(callout).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("CalloutAdmin/Index/");
}
它由以下JQuery调用,它完美运行:
$(function () {
$(".techdropdown").change(function () {
var recordToUpdate = $(this).attr("id");
var selectedTech = $(".techdropdown option:selected").val();
window.alert(selectedTech);
$.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate);
});
});
唯一没有发生的事情是刷新页面,这是重定向应该做的事情。有人可以建议吗?
更新
我要做的是更新此Callout对象,而不重定向到另一个视图。我从下拉列表中选择技术人员,它会自动将标注的技术人员值设置为我从下拉列表中选择的值。
答案 0 :(得分:2)
您将重定向返回到AJAX请求,并且AJAX请求正在后台加载页面。如果你想让整个页面重定向,你可能想在jQuery中使用成功回调
$.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate, function() { document.location = "CalloutAdmin/Index/"; } );
如果您想让操作控制重定向的位置,您可能希望使用从您的操作返回JsonResult
或ContentResult
,并从中输出的URL具有jQuery的成功回调重定向用户。
答案 1 :(得分:1)
假设UpdateTech和Index都属于CallOutAdminController,那么将UpdateTech方法更改为:
[HttpPost]
public ActionResult UpdateTech(int tech, int id)
{
Callout callout = db.Callouts.Find(id);
callout.TechnicianId = tech;
callout.TechStatus = "ASSIGNED";
db.Entry(callout).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index","CallOutAdmin");
}
然后让你像这样的jQuery函数:
$(document).ready(function(e) {
$(".techdropdown").change(function () {
var recordToUpdate = $(this).attr("id");
var selectedTech = $(".techdropdown option:selected").val();
window.alert(selectedTech);
window.location = "/CallOutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate
});
});