Javascript 尝试使用Jquery post和ActionResult刷新页面

Javascript 尝试使用Jquery post和ActionResult刷新页面,javascript,jquery,asp.net-mvc-4,http-post,redirecttoaction,Javascript,Jquery,Asp.net Mvc 4,Http Post,Redirecttoaction,我一直试图让“RedirecttoAction”语句在这里工作,但它没有改变。方法如下: [HttpPost] public ActionResult UpdateTech(int tech, int id) { Callout callout = db.Callouts.Find(id); callout.TechnicianId = tech; callout.TechStatus = "ASSIGNED";

我一直试图让“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对象,而不重定向到另一个视图。我从下拉列表中选择技师,它会自动将调出的技师值设置为我从下拉列表中选择的值

将重定向返回到AJAX请求,AJAX请求将在后台加载页面。如果要重定向整个页面,可能需要在jQuery中使用success回调

$.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate, function() { document.location = "CalloutAdmin/Index/"; } );

如果您想让操作控制重定向的位置,您可能希望使用从您的操作中返回a
JsonResult
ContentResult
以及从那里输出的URL,让jQuery的成功回调重定向用户。

您将重定向返回到AJAX请求,AJAX请求在后台加载页面。如果要重定向整个页面,可能需要在jQuery中使用success回调

$.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate, function() { document.location = "CalloutAdmin/Index/"; } );

如果要让操作控制重定向的位置,您可能希望使用从您的操作返回的
JsonResult
ContentResult
,并使用jQuery的成功回调重定向用户。

假设UpdateTech和Index都属于Callout AdminController,然后将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
    });
});

假设UpdateTech和Index都属于Callout AdminController,然后将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
    });
});

你能准确地解释一下你想要达到的目标吗?因为我觉得你可能在某个地方感到困惑。如果要重定向页面,不需要使用jQuery的AJAX加载?我会补充一个答案,我相信这个答案对你有帮助,但是如果你能在你的问题中提供更多的细节,这将有助于你准确地解释你想要达到的目标,因为我觉得你可能在某个地方感到困惑。如果要重定向页面,不需要使用jQuery的AJAX加载?我将添加一个我相信对您有用的答案what,但如果您能在问题中提供更多细节,它将有助于Window.location=“/CalloutAdmin/UpdateTech?tech=“+selectedTech+”&id=“+recordToUpdate不起作用,它告诉我找不到UpdateTech方法当UpdateTech不存在于CalloutAdmin的控制器中时。。。尝试更新“/calloadmin/UpdateTech=”到“/calloadmin/UpdateTech=”因为根据您的设置,它可能区分大小写。window.location=“/calloadmin/UpdateTech=”+selectedTech+”&id=“+recordToUpdate不起作用,它告诉我找不到UpdateTech方法当UpdateTech在Callout Admin的控制器中不存在时。。。尝试将“/calloadmin/UpdateTech=”更新为“/calloadmin/UpdateTech=”,因为它可能区分大小写,具体取决于您的设置。